Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / вектор пар / 7 сообщений из 7, страница 1 из 1
04.12.2014, 08:30
    #38824444
hb2hb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вектор пар
всем привет!
есть вектор пар - vec_str
создаю элементы вектора, вывод значений - всё ОК,
а вот изменение значений пары не происходит.
почему? (не могу понять что я не понимаю)
и почему так тихо, ни одного сообщения ?!
кто-нибудь дайте правильное направление мысли...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
//---
                std::vector<std::pair<std::string, std::string>> vec_str;
                vec_str.push_back(std::make_pair("key-1","val-1"));
		vec_str.push_back(std::make_pair("key-2","val-2"));
		vec_str.push_back(std::make_pair("key-3","val-3"));
		int k=0;
		for(std::vector<std::pair<std::string, std::string>>::iterator it=vec_str.begin(); it != vec_str.end(); ++it )
		{
			std::stringstream ss;
			ss << ++k;

			std::cout << ((std::pair<std::string, std::string>)(*it)).first
					<< " = "
					<< ((std::pair<std::string, std::string>)(*it)).second
					<< std::endl;

			((std::pair<std::string, std::string>)(*it)).second = "new-val-"+ss.str(); // update second of pair !!!
		}

		std::cout << "---" << std::endl;
		for(std::vector<std::pair<std::string, std::string>>::iterator it=vec_str.begin(); it != vec_str.end(); ++it )
		{
			std::cout << ((std::pair<std::string, std::string>)(*it)).first
					<< " = "
					<< ((std::pair<std::string, std::string>)(*it)).second
					<< std::endl;
		}
//---
...
Рейтинг: 0 / 0
04.12.2014, 09:51
    #38824505
RWolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вектор пар
hb2hb,

выкидываем все эти странные приведения типов.
...
Рейтинг: 0 / 0
04.12.2014, 10:05
    #38824523
hb2hb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вектор пар
RWolf,
10х, помогло, сделал: (*it).second = "new-val-"+ss.str();
p.s. эти странные приведения типа были предназначены для эклипса,
значит что-то перемудрил...
...
Рейтинг: 0 / 0
04.12.2014, 14:57
    #38824961
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вектор пар
hb2hb,

Ты потому что менял поле во временной переменной.
...
Рейтинг: 0 / 0
04.12.2014, 17:13
    #38825197
hb2hb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вектор пар
MasterZiv,
если я правильно понял: операция приведение типа создает временный объект?
интересно как это проверить?
создать конструктор копий и посмотреть будет ли он вызываться.
или создание идет по др. цепочке ?
...
Рейтинг: 0 / 0
04.12.2014, 18:36
    #38825351
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вектор пар
hb2hbMasterZiv,
если я правильно понял: операция приведение типа создает временный объект?
интересно как это проверить?
создать конструктор копий и посмотреть будет ли он вызываться.
или создание идет по др. цепочке ?

Да, так.
...
Рейтинг: 0 / 0
04.12.2014, 22:54
    #38825568
hb2hb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вектор пар
MasterZiv,

теперь понятно, 10х
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / вектор пар / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]