map insert错误
我定义了结构:
typedef std::map<std::string, std::string> PAIR_T;
typedef struct config_struct
{
std::string section;
PAIR_T pair;
} CONFIG_T;
按如下执行insert:
std::vector<CONFIG_T> m_Param;
for (std::vector<CONFIG_T>::const_iterator itr1 = m_Param.begin(); itr1 != m_Param.end(); ++itr1)
{
if ((itr1->section).compare(section) == 0)
{
PAIR_T::const_iterator itr2 = (itr1->pair).find(param);
if (itr2 != (itr1->pair).end())
{
(itr1->pair).erase(itr2);
}
(itr1->pair).insert(PAIR_T::value_type(param, value));
break;
}
}
出现如下错误:
error C2663: 'insert' : 3 overloads have no legal conversion for 'this' pointer
请问怎么回事啊?谢谢了
[解决办法]
itr1->section...itr1是vector的迭代器,怎么能这样用呢?应该是*itr1...
[解决办法]
PAIR_T mp;mp.insert(make_pair(param, value));(itr1->pair).insert(mp)
[解决办法]
PAIR_T pair;//加上mutable
[解决办法]
map 主键值最好不要用string 如果要用string, 就用multimap
[解决办法]
typedef std::map<std::string, std::string> PAIR_T;typedef struct config_struct{ std::string section; PAIR_T pair;} CONFIG_T;vector<CONFIG_T> m_Param;typedef pair <std::string, std::string> Int_Pair;void show(){ for(std::vector<CONFIG_T>::iterator itr1 = m_Param.begin(); itr1 != m_Param.end(); ++itr1) { if ((itr1->section).compare("") == 0) { PAIR_T::iterator itr2 = (itr1->pair).find("0"); if (itr2 != (itr1->pair).end()) { ((itr1->pair)).erase(itr2); } (itr1->pair).insert(Int_Pair("", "")); break; } }}