c++ - STL 容器赋值和 const 指针

标签 c++ gcc stl constants

编译:

int* p1;
const int* p2;
p2 = p1;

这不是:

vector<int*> v1;
vector<const int*> v2;
v2 = v1;  // Error!
v2 = static_cast<vector<const int*> >(v1);  // Error!

嵌套 const 指针的类型等价规则是什么?我认为转换是隐式的。此外,我宁愿不实现 STL 容器的逐点分配,除非我真的必须这样做。

最佳答案

直接赋值是不可能的。正如其他人所解释的那样,等价性不是由指针类型建立的,而是由容器类型建立的。在这种情况下,vector 不想接受另一个具有不同但兼容的元素类型的 vector 。

没有真正的问题,因为您可以使用 assign 成员函数:

v2.assign(v1.begin(), v1.end());

关于c++ - STL 容器赋值和 const 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902667/

相关文章:

c++ - std::list 上的编译错误

c++ - C++ STL 中是否有任何数据结构用于执行 log(n) 中第 k 个元素的插入、搜索和检索?

c++ - 我应该使用 boost::ptr_vector<T> 还是 vector<boost::shared_ptr<T>>?

c++ - 试图强制静态对象初始化

c++ - 嵌套命名空间 : accessing value from the inside namespace

c++ - 如何在 C++ 中使用复数 "i"

c++ - 为什么这个无操作循环没有被优化掉?

c++ - 如何在文本文件中搜索单词,如果找到则打印出整行

xcode - 如果不是这个 CFString 废话,我可以让 GCC 4.6.2 在 Xcode 4.2 中工作

c++ - 是什么导致了这次崩溃?