首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

map insert异常

2012-03-19 
map insert错误我定义了结构:typedef std::mapstd::string, std::string PAIR_Ttypedef struct config_

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...
[解决办法]

C/C++ code
PAIR_T mp;mp.insert(make_pair(param, value));(itr1->pair).insert(mp)
[解决办法]
PAIR_T pair;//加上mutable
[解决办法]
map 主键值最好不要用string 如果要用string, 就用multimap
[解决办法]
C/C++ code
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;        }    }} 

热点排行