0 c++
对的所有元素进行异或运算时出错std::set。下面是部分代码。不太了解std::transform。帮助请:)
#include<bits/stdc++.h>
#define ll long long int
using namespace std;
int main()
{
set<ll> e1 ;//suppose i had inserted few elements in it!
ll x2;
cin>>x2;
//now i want to xor all elements of set with x2.
std::transform(std::begin(e1), std::end(e1), std::begin(e1), [=](ll x){return x2^x;});
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
只读位置'__result.std :: _ Rb_tree_const_iterator <_Tp> :: operator *()的错误分配
你不能 A std::set不允许对其元素进行就地修改,因此永远不能写入其迭代器。因此,您不能将a std::set用作a 的目标std::transform。
您必须根据旧元素创建新的集合,并随您的需要进行转换。(例如,通过使用a std::inserter作为目标std::transform。)
您确定不能只使用std::vector吗?