std :: vector <struct>到const std :: vector <const struct =“”> * </const> </struct>

时间:2014-10-23 18:37:28

标签: c++ vector

我有私有变量std::vector<some struct>我可以以某种方式将向量传递给函数返回值,但没有&#34;写&#34;访问,因此您将无法在其中添加新元素,并且您无法修改元素(例如const std::vector<some const struct>*。我怎么能这样做?我唯一的想法是创建一个带有常量指针的新向量。有没有更好的解决方案?

1 个答案:

答案 0 :(得分:5)

您无法通过指针或对const向量的引用来修改向量的元素。所以以下是安全的:

const std::vector<some_type>* get_pstuff() const { return &the_vector; }
const std::vector<some_type>& get_rstuff() const { return the_vector; }

另一方面,将const_iterators返回到向量的开头和结尾可能更惯用:

std::vector<some_type>::const_iterator cbegin() const { return the_vector.cbegin(); }
std::vector<some_type>::const_iterator cend() const { return the_vector.cend(); }