关联数组是什么意思?

时间:2013-03-06 14:20:01

标签: c++ data-structures associative-array

我正在阅读C ++标准库:教程和参考书。在地图示例中:

   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;

作者说:

  

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

任何人都可以解释一下,任意类型在关联数组中意味着什么?

3 个答案:

答案 0 :(得分:9)

数组通常由元素的位置索引。一个简单的数组 - int x[10],其元素为x[0] ... x[9]。索引是无符号整数值。

关联容器意味着索引可以是任意的(不一定是无符号整数)类型(在这种情况下,是std::string)。

答案 1 :(得分:2)

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

另一方面,地图不对键有这样的限制,它们可以是字符串,整数,任何你想要的类型(前提是在那种类型上有一个合理的相等比较运算符)。

答案 2 :(得分:2)

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

您可以创建将std::string映射到floatshortYourClass es或YourOtherClassYetAnotherClass的地图。< / p>

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