Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вопрос по map у


Автор: knut 3.5.2007, 11:03
добрый день.
есть вопрос. почемы 2 -ий вариант не компилится?
Код

std::map<std::string, std::string>m_my_map;
std::string str_value;
1.m_my_map[str_value.substr(0,size)] = str_value.substr(size + 1);//так копильится
2.m_my_map.insert(str_value.substr(0,size),str_value.substr(size + 1));// а так нет

Автор: zkv 3.5.2007, 11:34
Цитата(knut @  3.5.2007,  11:03 Найти цитируемый пост)
m_my_map.insert(str_value.substr(0,size),str_value.substr(size + 1));// а так нет

через std::pair() надо добавлять

Автор: korbian 3.5.2007, 11:43
еще можно использовать макрос std::make_pair(str_value.substr(0,size),str_value.substr(size + 1))
 и  std::map<std::string, std::string>::value_type(str_value.substr(0,size),str_value.substr(size + 1))

Автор: knut 3.5.2007, 11:54
так заработало smile
Код

typedef std::pair<std::string,std::string>m_my_pair;
std::map<std::string,std::string>m_my_map;
m_my_map.insert(m_my_pair(str_value.substr(0,size),str_value.substr(size + 1)));

но  еще вопрос а почему нельзя в мап передать как параметр pair ну вроде этого
Код

std::map<m_my_pair>m_my_map;


Автор: HappyLife 3.5.2007, 13:23
knut, мап обязан принимать два аргумента а не один. ИМХО

Автор: korbian 3.5.2007, 13:27
Цитата(HappyLife @  3.5.2007,  14:23 Найти цитируемый пост)
 ИМХО

Это действительность  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)