【发布时间】:2020-06-01 06:28:01
【问题描述】:
这个 SO 回答说 STL Map with a Vector for the Key 向量可以用作键。因此,当我们使用向量作为键时。这实际上是如何工作的,因为键需要是唯一的,所以当我们插入另一个具有相同元素的向量时,map 会逐个元素地检查重复的元素,或者向量的名称确实指定了什么?就像数组的名字代表基地址一样。因此,数组可以用作键,因为在这种情况下基地址可以用作键,但在向量的情况下,键是什么。它在内部是如何工作的。
因为当我打印向量的名称时,我确实得到了一个错误
vector<int> v;
cout<<v; //error
【问题讨论】:
-
打印矢量名称是什么意思?
-
has operators == and <这有什么帮助?我的问题是检查重复元素将映射比较矢量关键元素的元素 -
@PulkitBhatnagar 但是...没有人会强迫您使用
std::vector作为std::map的键。 你为你使用的东西付费。这是可以做到的,也许有一些用例,但你肯定可以改变你选择的数据结构。 STL 容器被设计为具有最大的通用性,并且可以以用户想要使用它们的任何方式使用。 -
@PulkitBhatnagar 例如,参见Why is std::map implemented as a red-black tree?。
-
@PulkitBhatnagar 直接存储。
std::map会将键和值复制到自身中。std::unordered_map可以存储密钥的哈希值。
标签: c++ arrays dictionary vector stl