我有以下 C++ map 示例代码:
map<string,string> &weight2price
....
weight = ...
price = ...
if(weight2price.find(weight) == weight2price.end())
weight2price[weight] = price;
谁能告诉我这是什么意思
if(weight2price.find(weight) == weight2price.end())
最佳答案
STL Map 是一个标准的 C++ 容器。它使用可以比较的唯一键来引用存储在容器内的值数据。它的工作方式很像数组,但与数组不同的是,键可以是任何东西,不需要是整数。 map 的语法是:
std::map < Key, Data, Compare, Alloc>
Key - 将用作键的对象类型
数据 - 将用作数据的对象类型
比较 - 键的比较函数
Alloc - 映射的分配器,用于所有内部内存管理
用法:
map[Key] = Data
要进一步阅读有关 STL map 的信息,请看这里: http://en.wikipedia.org/wiki/Map_%28C%2B%2B%29 在这里:http://www.sgi.com/tech/stl/Map.html
在代码片段中,您正在使用 map 中的 find() 函数。此函数返回一个迭代器,该迭代器指向映射中包含您正在搜索的键的元素。如果未找到该键,查找函数将返回指向映射末尾的迭代器。这就是您附加到问题的代码片段中正在检查的内容,如果 find 函数返回了结束迭代器的值,这意味着该键不在 map 中,因此它将键和数据添加到 map 中。 GMan 在他的评论中对您的代码进行了优化。
对迭代器的一个非常基本的解释(尽管不完整)是迭代器是指向一对
希望这对您有所帮助!
关于c++ - C++ 映射是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472392/