boost :: flyweight作为std :: map中的值

时间:2013-09-07 19:04:25

标签: c++ boost map insert

我想知道为什么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 谢谢,

1 个答案:

答案 0 :(得分:2)

std::pair<iterator,bool> insert( const value_type& value );

std::map 如果元素已经存在,

将不会插入元素

如果插入了新元素,则对中的pair::second元素设置为true;如果已存在等效键,则设置为false。

您的问题与boost

无关

查看this页面上的示例。它说明了您的方案。