У меня есть набор пар, и я хочу изменить второе поле некоторой пары, которое я хочу найти первым:
#include <iostream>
#include <utility>
#include <set>
int main(){
auto p=std::make_pair(2,3);
std::set<std::pair<int,int>> s{p};
auto it=s.find(p);
it->second=5; // compilation error
if(it!=s.end()) std::cout << it->second << '\n';
}
Приведенный выше код не может быть скомпилирован, потому что он жалуется, что результат итератора find не может быть присвоен. Однако я не понимаю, почему это константный итератор.
Что не так с вышеизложенным, и как мне назначить пару, на которую указывает результат итератора поиска?