关联数组的含义是什么?

What is the meaning of associative array?

本文关键字:是什么 数组 关联      更新时间:2023-10-16

我在读《c++标准库:教程和参考书》。在map示例中:

   typedef map<string,float> StringFloatMap;
   StringFloatMap coll;
   //insert some elements into the collection
   coll["VAT"] = 0.15;
   coll["Pi"] = 3.1415;
   coll["an arbitrary number"] = 4983.223;
   coll["Null"] = 0;

作者说:

在这里,索引用作键,可以是任何类型。这是关联数组的接口。关联数组是索引可以是任意类型的数组。

谁能告诉我,任意类型在关联数组中是什么意思?

数组通常根据元素的位置进行索引。一个简单的数组——int x[10],有它的元素x[0] ... x[9]。索引为无符号整型值。

关联容器意味着索引可以是任意类型(不一定是无符号整型)(在本例中是std::string)。

区别在于向量/数组,大多数人将其称为序列容器,但实际上可以将其视为关联容器,其键是从0到n的完整整数范围

另一方面,映射对键没有这样的限制,它们可以是字符串、整数或任何你想要的类型(当然前提是在该类型上有一个合理的相等比较操作符)。

这意味着您可以创建一个映射,将任意键类型匹配到任意值类型。

可以创建std::string s到float s、short s到YourClass s、YourOtherClassYetAnotherClass的映射。

您甚至可以创建一个std::map<void *, void *>,它可以将任何指针映射到任何其他指针。尽管这样做的使用是有问题的,因为没有办法找出指针所指向的数据的类型