我试图将相同的键多次插入到地图中但具有不同的值.它不起作用.我知道operator []做了这个工作,但我的问题是,如果插入的这种行为是正确的吗?不应该插入()插入?我不知道标准是什么.不幸的是我没有它(标准的C++)所以我无法检查.
谢谢你有用的ansers.
Lau*_*nis 14
如果要插入具有不同值的相同键,则需要std::multimap
使用.
std::map::insert
如果密钥已存在,则不会执行任何操作.在std::map::operator[]
将覆盖旧值.
对于STL参考,你不需要C++标准本身; 像http://www.cplusplus.com/reference/这样的东西也会这样做.
我不确定我完全理解,但听起来你在覆盖地图上的先前条目; A 每个键map
只存储一个值.
相反,你需要使用multi_map
.这将允许您插入具有不同值的相同键.你确实失去了operator[]
这种方式,因为它不会有意义.(当插入时,确定,但该操作符也会检索.它应该检索哪个值?)
这是一个例子(从这里修改):
#include <iostream>
#include <map>
int main(void)
{
std::multimap<std::string, int> m;
m.insert(std::make_pair("a", 1));
m.insert(std::make_pair("b", 2));
m.insert(std::make_pair("c", 3));
m.insert(std::make_pair("a", 4));
m.insert(std::make_pair("b", 5));
m.insert(std::make_pair("a", 6));
std::cout << "Number of elements with key a: " << m.count("a") << endl;
std::cout << "Number of elements with key b: " << m.count("b") << endl;
std::cout << "Number of elements with key c: " << m.count("c") << endl;
std::cout << "Elements in m: " << endl;
for (m::iterator it = m.begin(); it != m.end(); ++it)
{
std::cout << " [" << it->first << ", " << it->second << "]" << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4874 次 |
最近记录: |