проблемы с map в c++

#include <bits/stdc++.h>
using namespace std;

int main(){
    map<int, int> c= {{1, 3}, {2, 4}};
    for (auto elem:c) elem.second*=2;
    for (auto elem:c) cout << elem.second << ' ';
}

почему я не могу изменить значение?????


Ответы (1 шт):

Автор решения: Harry

Потому что работаете с копиями (как при передаче в функцию по значению).

Работайте через ссылки:

map<int, int> c= {{1, 3}, {2, 4}};
for (auto& elem:c) elem.second*=2;
for (auto elem:c) cout << elem.second << ' ';
→ Ссылка