gpt4 book ai didi

c++ - std::map 索引和插入调用之间的区别

转载 作者:太空狗 更新时间:2023-10-29 23:14:47 24 4
gpt4 key购买 nike

索引重载运算符和 std::map 的插入方法调用有什么区别?

即:

some_map["x"] = 500;

对比

some_map.insert(pair<std::string, int>("x", 500));

最佳答案

我相信 insert() 不会覆盖现有值,可以通过测试返回的迭代器/对值中的 bool 值来检查操作结果

对下标运算符 [] 的赋值只是覆盖那里的任何内容(如果没有条目则插入一个条目)

如果您不期望这种行为并且不适应它,则插入和 [] 运算符中的任何一个都可能导致问题。

例如插入:

std::map< int, std::string* > intMap;
std::string* s1 = new std::string;
std::string* s2 = new std::string;
intMap.insert( std::make_pair( 100, s1 ) ); // inserted
intMap.insert( std::make_pair( 100, s2 ) ); // fails, s2 not in map, could leak if not tidied up

和 [] 运算符:

std::map< int, std::string* > intMap;
std::string* s1 = new std::string;
std::string* s2 = new std::string;
intMap[ 100 ] = s1; // inserted
intMap[ 100 ] = s2; // inserted, s1 now dropped from map, could leak if not tidied up

我认为那些是正确的,但还没有编译它们,所以可能有语法错误

关于c++ - std::map 索引和插入调用之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32171473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com