求助奇怪的编译错误
  • 板块灌水区
  • 楼主SalomeJLQ
  • 当前回复23
  • 已保存回复23
  • 发布时间2020/9/5 16:35
  • 上次更新2023/11/5 13:42:02
查看原帖
求助奇怪的编译错误
246979
SalomeJLQ楼主2020/9/5 16:35

这是一道水题的code

#include<bits/stdc++.h>
using namespace std;
struct node{int le,ri,maxn;}a[80005];
int n,m,s[20005];
void build(int l,int r,int p){
	a[p].le==l,a[p].ri==r;
	if(a[p].le==a[p].ri){a[p].maxn=s[a[p].le];return;}
	int mid=l+r>>1;
	build(l,mid,p*2);
	build(mid+1,r,p*2+1);
	a[p].maxn=max(a[p*2],a[p*2+1]);
}
int ask(int x,int y,int l,int r,int p){
	if(l>=x&&r<=y)return a[p].maxn;
	int mid=l+r>>1,ll=0,rr=0;
	if(x<=mid)ll=ask(x,y,l,mid,p*2);
	if(y>=mid)rr=ask(x,y,mid+1,r,p*2+1);
	return max(ll,rr);
}
void change(int l,int r,int x,int y,int p){
	if(a[p].le==a[p].ri&&a[p].ri==x){a[p].maxn=max(a[p].maxn,y);return;}
	int mid=l+r>>1;
	if(l<=mid)change(l,mid,x,y,p*2);
	else change(mid,r+1,x,y,p*2+1);
	a[p].maxn=a[p*2].maxn,a[p*2+1].maxn;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>s[i];
	build(1,n,1);
	while(m--){
		int x,y;char aa;
		cin>>aa>>x>>y;
		if(aa=='Q')cout<<ask(x,y,1,n,1)<<endl;
		else change(1,n,x,y,1);
	}
	return 0;
}

,下面是神奇编译错误

/tmp/tmpx78jolb5/src: 在函数‘void build(int, int, int)’中:
/tmp/tmpx78jolb5/src:6:9: 警告:left operand of comma operator has no effect [-Wunused-value]
  a[p].le==l,a[p].ri==r;
  ~~~~~~~^~~
/tmp/tmpx78jolb5/src:6:20: 警告:right operand of comma operator has no effect [-Wunused-value]
  a[p].le==l,a[p].ri==r;
             ~~~~~~~^~~
/tmp/tmpx78jolb5/src:8:11: 警告:建议在‘>>’的操作数中出现的‘+’前后加上括号 [-Wparentheses]
  int mid=l+r>>1;
          ~^~
/tmp/tmpx78jolb5/src:11:31: 错误:cannot convert ‘const node’ to ‘int’ in assignment
  a[p].maxn=max(a[p*2],a[p*2+1]);
                               ^
/tmp/tmpx78jolb5/src: 在函数‘int ask(int, int, int, int, int)’中:
/tmp/tmpx78jolb5/src:15:11: 警告:建议在‘>>’的操作数中出现的‘+’前后加上括号 [-Wparentheses]
  int mid=l+r>>1,ll=0,rr=0;
          ~^~
/tmp/tmpx78jolb5/src: 在函数‘void change(int, int, int, int, int)’中:
/tmp/tmpx78jolb5/src:22:11: 警告:建议在‘>>’的操作数中出现的‘+’前后加上括号 [-Wparentheses]
  int mid=l+r>>1;
          ~^~
/tmp/tmpx78jolb5/src:25:33: 警告:right operand of comma operator has no effect [-Wunused-value]
  a[p].maxn=a[p*2].maxn,a[p*2+1].maxn;
                        ~~~~~~~~~^~~~
In file included from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_algobase.h: In instantiation of ‘const _Tp& std::max(const _Tp&, const _Tp&) [with _Tp = node]’:
/tmp/tmpx78jolb5/src:11:31:   required from here
/usr/include/c++/8/bits/stl_algobase.h:224:15: 错误:no match for ‘operator<’ (operand types are ‘const node’ and ‘const node’)
       if (__a < __b)
           ~~~~^~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
                 from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_pair.h:454:5: 附注:candidate: ‘template<class _T1, class _T2> constexpr bool std::operator<(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)’
     operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
     ^~~~~~~~
/usr/include/c++/8/bits/stl_pair.h:454:5: 附注:  template argument deduction/substitution failed:
In file included from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_algobase.h:224:15: 附注:  ‘const node’ is not derived from ‘const std::pair<_T1, _T2>’
       if (__a < __b)
           ~~~~^~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:67,
                 from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_iterator.h:308:5: 附注:candidate: ‘template<class _Iterator> bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)’
     operator<(const reverse_iterator<_Iterator>& __x,
     ^~~~~~~~
/usr/include/c++/8/bits/stl_iterator.h:308:5: 附注:  template argument deduction/substitution failed:
In file included from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_algobase.h:224:15: 附注:  ‘const node’ is not derived from ‘const std::reverse_iterator<_Iterator>’
       if (__a < __b)
           ~~~~^~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:67,
                 from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_iterator.h:346:5: 附注:candidate: ‘template<class _IteratorL, class _IteratorR> bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)’
     operator<(const reverse_iterator<_IteratorL>& __x,
     ^~~~~~~~
/usr/include/c++/8/bits/stl_iterator.h:346:5: 附注:  template argument deduction/substitution failed:
In file included from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_algobase.h:224:15: 附注:  ‘const node’ is not derived from ‘const std::reverse_iterator<_Iterator>’
       if (__a < __b)
           ~~~~^~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:67,
                 from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_iterator.h:1139:5: 附注:candidate: ‘template<class _IteratorL, class _IteratorR> bool std::operator<(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)’
     operator<(const move_iterator<_IteratorL>& __x,
     ^~~~~~~~
/usr/include/c++/8/bits/stl_iterator.h:1139:5: 附注:  template argument deduction/substitution failed:
In file included from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_algobase.h:224:15: 附注:  ‘const node’ is not derived from ‘const std::move_iterator<_IteratorL>’
       if (__a < __b)
           ~~~~^~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:67,
                 from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_iterator.h:1145:5: 附注:candidate: ‘template<class _Iterator> bool std::operator<(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&)’
     operator<(const move_iterator<_Iterator>& __x,
     ^~~~~~~~
/usr/include/c++/8/bits/stl_iterator.h:1145:5: 附注:  template argument deduction/substitution failed:
In file included from /usr/include/c++/8/bits/char_traits.h:39,
                 from /usr/include/c++/8/ios:40,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/stl_algobase.h:224:15: 附注:  ‘const node’ is not derived from ‘const std::move_iterator<_IteratorL>’
       if (__a < __b)
           ~~~~^~~~~
In file included from /usr/include/c++/8/string:52,
                 from /usr/include/c++/8/bits/locale_classes.h:40,
                 from /usr/include/c++/8/bits/ios_base.h:41,
                 from /usr/include/c++/8/ios:42,
                 from /usr/include/c++/8/istream:38,
                 from /usr/include/c++/8/sstream:38,
                 from /usr/include/c++/8/complex:45,
                 from /usr/include/c++/8/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/8/bits/stdc++.h:52,
                 from /tmp/tmpx78jolb5/src:1:
/usr/include/c++/8/bits/basic_string.h:6133:5: 附注:candidate: ‘template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)’
     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
     ^~~~~~~~
/
...

什么情况

2020/9/5 16:35
加载中...