我对 STL 容器及其元素的常量性思考过度(有些人可能会说思考不足,让我们看看会发生什么)。
我一直在寻找对此的讨论,但结果出奇地稀少。所以我不一定要在这里寻找明确的答案,我很乐意讨论让我头脑中的齿轮再次运转。
假设我有一个类将 std::strings 保存在 std::vector 中。我的类(class)是一本字典,它从字典文件中读取单词。它们永远不会改变。所以将其声明为
似乎是明智的std::vector<const std::string> m_myStrings;
但是,我读过零散的评论,您不应该在 std::vector 中使用 const 元素,因为这些元素需要可赋值。
问题:
是否存在在 std::vector 中使用 const 元素的情况(不包括 hack 等)?
是否在其他容器中使用了 const 元素?如果有,是哪些,什么时候?
我在这里主要讨论作为元素的值类型,而不是指针。
最佳答案
My class is a dictionary that reads words from a dictionary file. They will never be changed.
封装在这里可以提供帮助。
让你的类(class)保持 vector<string>
,但将其设为私有(private)。
然后向您的类添加一个访问器,返回一个 const vector<string> &
,并让调用者通过它。
调用者不能改变 vector ,并且operator []
vector 将递给他们const string &
,这正是您想要的。
关于c++ - STL 容器及其元素的常量性——何时使用常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30233877/