c++ - STL 容器及其元素的常量性——何时使用常量?

标签 c++ c++11 vector stl constants

我对 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/

相关文章:

C++11,常量数据成员,std::inserter,复制

3d - 如何有效地旋转和平移 3D 平面

c++ - 连接正向和反向 vector

c++ - 计算中间 vector 角

c++ - 在 OpenCV 中通过 cartToPolar 放置点 vector

c++ - 将函数对象传递给构造函数

c++ - Qt c++ - 克隆一个对象

C++ 延长 && 的生命周期

c++ - 在 C++ 中嵌入汇编器可以接受吗?

c# - 为什么此输出在 C# 和 C++ 中不同?