c++ - C++ 映射是什么意思?

标签 c++ dictionary

我有以下 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/

相关文章:

c++ - 基本数组操作的段错误

c++ - 为树莓派交叉编译 QT 应用程序 - 无法打开共享对象文件

c++ - 使用结构参数从程序集调用 C++ 函数

C++ 使用默认参数重载

c++ - 控制小数位数

python - 在类变量上调用类内的 type(dict) 函数 (Python 3.4)

python - 在嵌套字典中移动字典

python - 如何扩展字典的文件路径

c# - 用于查找项目的字典与列表

dictionary - 更新 Kotlin 中特定键的映射值