我想知道为什么std::map
在使用insert之后不会替换值
例如:
using std::string;
using boost::flyweight;
using std::map;
int main()
{
map<string,flyweight<string>> testMap;
flyweight<string> str("1");
testMap.insert(std::make_pair("1","1"));
testMap.insert(std::make_pair("1","2"));
str = "2";
printf("Inside map at \"1\" is:%s\r\n",testMap.at("1").get().c_str());
printf("str equals %s",str.get().c_str());
}
将打印:
Inside map at "1" is: 1
str equals 2
使用flyweight<string>
作为示例,使用int
时会发生同样的事情。
使用Windows操作系统,visual 2010 ide 谢谢,
答案 0 :(得分:2)
std::pair<iterator,bool> insert( const value_type& value );
的 std::map
如果元素已经存在,
将不会插入元素
如果插入了新元素,则对中的pair::second
元素设置为true;如果已存在等效键,则设置为false。
您的问题与boost
查看this页面上的示例。它说明了您的方案。