gpt4 book ai didi

c++ - 只读位置 '__result.std::_Rb_tree_const_iterator<_Tp>::operator*()' 的错误分配

转载 作者:太空宇宙 更新时间:2023-11-04 15:29:59 24 4
gpt4 key购买 nike

std::set 的所有元素执行 xor 时出现一些错误。下面是部分代码。不太了解 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;
}

错误信息:

Error assignment of read-only location '__result.std::_Rb_tree_const_iterator<_Tp>::operator*()'

最佳答案

你不能。 std::set 不允许就地修改其元素,因此永远无法写入其迭代器。因此,您不能将 std::set 用作 std::transform 的目标。

您必须根据旧元素创建一个新集,并随时进行转换。 (例如,通过使用 std::inserter 作为 std::transform 的目标。)

你确定你不能只使用 std::vector 吗?

关于c++ - 只读位置 '__result.std::_Rb_tree_const_iterator<_Tp>::operator*<long long int>()' 的错误分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56929102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com