簡體   English   中英

只讀位置&#39;__result.std :: _ Rb_tree_const_iterator &lt;_Tp&gt; :: operator *的錯誤分配 <long long int> ()”

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

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;
     }

錯誤信息:

只讀位置'__result.std :: _ Rb_tree_const_iterator <_Tp> :: operator *()的錯誤分配

你不能 std::set不允許對其元素進行就地修改,因此永遠不能寫入其迭代器。 因此,您不能將std::set用作std::transform的目標。

您必須從舊元素中創建一個新集合,並隨需轉換。 (例如,通過使用std::inserter作為std::transform的目標。)

您確定不能只使用std::vector嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM