关联数组的含义是什么?
What is the meaning of associative array?
我在读《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、YourOtherClass
到YetAnotherClass
的映射。
您甚至可以创建一个std::map<void *, void *>
,它可以将任何指针映射到任何其他指针。尽管这样做的使用是有问题的,因为没有办法找出指针所指向的数据的类型
相关文章:
- 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组. 实际上比较的值是多少,
- 有人可以解释一下吗?这是关于数组和数组内部 if 语句的一些处理
- 如何从字符数组(不是字符串数组)中删除符号
- 如果我使用malloc()而不是堆栈数组,OpenGL不会渲染对象
- 如何判断指针是否是指向数组的指针
- 为什么这段代码给出错误......'a'是指针到字符指针,应该存储's'的地址,因为s是指向数组的第一个元素的指针
- 从C 到C#调用INT []显示随机大数字,而不是原始数组成员
- 将内存分配给 2D 数组时,“new int*[rowCount];”的含义是什么?是 2D 数组,是指向数组的指针数组
- 当我们使用字符串而不是字符数组时如何处理字符串的字符
- 如何将 c 字符串转换为指针数组,其中每个指针都是 char 数组中的一个单词
- 使用字符串而不是字符数组时程序崩溃
- 当参数之一是指针数组时,如何从C#调用C DLL
- 在C 中可能是字符串数组
- 这是缩小数组的有效方法吗?
- 这是什么数组声明
- C++-什么是指针数组版本的temp.pushback(temp[i])
- 为什么插入时动态分配的数组大小是初始数组的 2*大小,而不是大小+1?
- 不了解什么是内部数组
- 为什么我的程序是,数组中任意两个元素之间的最小差异,给出相反的结果
- 什么是连续数组