繁体   English   中英

错误:分配了只读引用'__b'

[英]error: assignment of read-only reference ‘__b’

void customsort()
{
    int a = 0;
    int b = 0;
    vector<pair<int, int> >::const_iterator it1,it2;
    for(it1 = temp.begin();it1<temp.end();it1++)
        for(it2 = temp.begin()+1;it2<temp.end();it2++)
            {
                a = it1->first+it1->second;
                b = it2->first+it2->second;     
                if(a>b)
                {   
                    swap(it1->first, it2->first);
                    swap(it1->second, it2->second);
                }
            }   
}

这是代码

我想要做的是交换配对向量

例如

说我有一个[1,1],[1,2],[2,0],[3,2]

我想根据它们的总和(升序)对它们进行排序

但是我遇到错误

 In file included from /usr/include/c++/4.8/bits/stl_pair.h:59:0, from /usr/include/c++/4.8/bits/stl_algobase.h:64, from /usr/include/c++/4.8/bits/char_traits.h:39, from /usr/include/c++/4.8/ios:40, from /usr/include/c++/4.8/ostream:38, from /usr/include/c++/4.8/iostream:39, from prog1.cpp:1: /usr/include/c++/4.8/bits/move.h: In instantiation of 'void std::swap(_Tp&, _Tp&) [with _Tp = const int]': prog1.cpp:23:34: required from here /usr/include/c++/4.8/bits/move.h:176:11: error: assignment of read-only reference '__a' __a = _GLIBCXX_MOVE(__b); ^ /usr/include/c++/4.8/bits/move.h:177:11: error: assignment of read-only reference '__b' __b = _GLIBCXX_MOVE(__tmp); 

提前致谢

对变量it1it2使用iterator而不是const_iterator

无法使用const_iterator更改值(并且swap想要更改值),这就是为什么会出现错误的原因。

错误消息显示:

In instantiation of ‘void std::swap(_Tp&, _Tp&) [with _Tp = const int]’:

即它认为您正在尝试交换两个const int ,这是不可能的。 intconst的原因是您使用的是const_iterator而不是iterator

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM