编译:
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/