在尝试编译此方法时,我从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对象的向量吗?
答案 0 :(得分:3)
不,元素类型不能是const(虽然可以指向const类型的指针)
也没有必要这样做,因为当你向向量返回一个const引用时,对元素的访问将是const_reference:http://www.cplusplus.com/reference/vector/vector/operator[]
答案 1 :(得分:3)
没有。通常,向量的元素不能是const
,因为当向量的数组需要重新分配时它们必须被移动。您必须存储Zone const *
;或者如果你真的需要不变的元素,或者使用不同的容器类型(list
,deque
或可能set
)。