带有指向const对象的const指针的std::vector不编译
std::vector with const pointer to const object does not compile
当我试图编译这个方法时,我从gcc中得到了很多错误。zones_是
std::map<int,std::vector<Zone const * const>>
那是MyClass的私人成员。
//get unique zones
std::vector<Zone const* const> MyClass::getZones() const {
std::vector<Zone const * const> zones; //why can I not do this???
std::map<Zone const * const,int> zone_set;
for(auto & pair : zones_) {
for(Zone const * const z : pair.second) {
if(zone_set.count(z) == 0) {
zone_set[z] = 1;
zones.push_back(z); //cannot do this
}
}
}
return zones;
}
我可以有一个指向常量对象的常量指针向量吗?
否,元素类型不能是const(但可以是指向const类型的指针)
也没有必要这样做,因为当您返回向量的const引用时,对元素的访问将是const_reference:http://www.cplusplus.com/reference/vector/vector/operator[]
否。通常,向量的元素不能是const
,因为当向量的数组需要重新定位时,它们必须被移动。您必须存储Zone const *
;或者,如果确实需要常量元素,可以使用不同的容器类型(list
、deque
或可能的set
)。
相关文章:
- 删除C++中带有 vector<const char *> 的类
- 启用从"vector<const T>&"到"const vector&"的隐式转换<T>
- std::move a const std::vector in a lambda capture
- std::vector::assign/std::vector::operator=(const&) 是否保证在"this"中重用缓冲区?
- 创建一个 const std::vector ,其中包含另一个 const std::vector 和其他值
- 有效地初始化 const std::vector 类成员
- C++如何将 std::vector 转换为 const<int> std::vector<const int>?
- 在循环条件中调用const vector size()似乎缺少优化
- 是否可以交换在 c++ 中作为函数 func(say) 中的参数传递的 const 向量的两个元素,例如:vector<int>func (const vector<int>&
- 如何从 std::initializer_list<char const* 构建 std::vector<std::string>>
- 将 std::vector<std::string> 转换为 const char* const*
- 如何初始化 const std::vector<MyClass>
- 将 std::vector<std::p air<const K, V>*> 转换为 std::vector<std::p air<const K, V>&g
- 这个(const vector<vector<int> > &A)"代码段是什么意思?
- 将 2D 数组插入 std::vector 时"cannot convert from 'const GLfloat [12]' to '_Objty'"错误消息
- 在函数中传递只读向量时,冗长真的值得吗?const vector<const string>&
- 矢量迭代器与 const Vector&不兼容
- 在 ctor 中使用 const&vector 初始化的 const&vector 成员
- 为什么"int *find(const vector<int> &vec, int value)"会给我一个无效的转换错误?
- 访问可能不存在的const vector成员- try/catch或if (count != 0)