c++ - vector<const int> 是不允许的。为什么 pair<const int, int> 被允许?

标签 c++

<分区>

Possible Duplicate:
Why does stack<const string> not compile in g++?

An answer to another question 解释了为什么我们(假设)不能拥有 const 对象的容器。例如,这是不允许的:

vector<const int> v; //not allowed

但是为什么允许第一个对象是const?这确实是 map 对象中的 pair 发生的情况。我错过了什么吗?

非常感谢对这种现象的详细和直观的解释。

最佳答案

我认为主要原因是因为 std::pair 不会重新分配对象,所以它们不必是可分配的。

更新:

实际上 vector 是唯一需要可分配对象的容器。这是因为根据标准 vector ,它的元素必须有一个连续的存储位置。因此,如果没有空间可以添加更多对象,vector 将不得不将其数据重新分配到另一个地方(因此使用对象的可分配属性)。

关于c++ - vector<const int> 是不允许的。为什么 pair<const int, int> 被允许?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13768089/

相关文章:

C++ fstream - 如何在 .open() 中添加变量而不是字符串?

c++ - 传递派生对象的智能指针 vector - 什么是最佳解决方案?

c++ - 为什么我不能使用 lambda 按值对 std::map 进行排序

c++ - 术语的含义 - Resource Acquisition Is Initialization

C++ 初学者输入错误数据类型时的无限循环并帮助评估我的代码

c++ - 数组中相隔 8 个或更多位置的两个元素的最大乘积

c++ - Boost 库、序列化和符号运算符?

java - JNI_CreateJavaVM函数方法不起作用,无法调试

c++ - 从函数获取 char* 后的条件 gdb 断点

c++ - 关于不同类型继承的思考