void sort_this(std::map<BITMAP*,MAPS>::iterator start,std::map<BITMAP*,MAPS>::iterator endd)
{
for(auto itt=start;itt!=endd;itt++)
{
for(auto it=start;it!=endd;it++)
{
if(itt->second.type > it->second.type)
{
std::swap(*it,*itt);
}
}
}
}
我需要交换*it
和*itt
,它会出现此错误。
files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\move.h|177|
error: assignment of read-only reference '__a'|
c:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\move.h|178|
error: assignment of read-only reference '__b'|
编辑:此功能的目的是安排地图的元素。根据second.type
答案 0 :(得分:7)
std::map
迭代器始终常量(考虑一下,如果更改密钥值,底层树可能会被破坏!),您可以交换值但是:
std::swap(it->second, itt->second);
免责声明:这可能是您正在寻找的,也可能不是,因为我不知道交换的目的是什么。