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'|
edit: Цель этой функции - упорядочить элементы карты. согласно второму типу.
std::map
iterators всегда постоянны в отношении ключей (подумайте об этом, если вы измените значение ключа, которое разрушает базовое дерево!), вы можете поменять значения:
std::swap(it->second, itt->second);
Отказ от ответственности: это может быть или не быть тем, что вы ищете, поскольку я не знаю, какова цель обмена.