哪个是正确的:vector <const string> OR const vector <string>?

use*_*311 4 c++ vector

哪个是正确的:vector<const string>或者const vector<string>?

我想创建一个std::vectorstd::stringS,我不会进行更改.但我不确定这两种方式中的哪一种更好,为什么.

Sho*_*hoe 19

如果您唯一的选择是那两个并且您希望程序编译,请使用const std::vector<std::string>.

如果你不介意编译错误(在GCC4.8Clang上),可能是由于const std::string不符合CopyAssignable(在C++ 11之前)或MoveAssignable(从C++ 11开始)的要求,甚至但显然,这主要是因为它不是Destructible,使用std::vector<const std::string>.

  • 实际问题是 `const std::string` 不是 [`Destructible`](http://en.cppreference.com/w/cpp/concept/Destructible),正如抱怨缺少的编译器错误消息所证明的那样有效的`operator delete`:“`没有匹配的函数调用'operator delete(const std::basic_string&lt;char&gt;*&amp;)`”。理论上,您可以为不是“CopyAssignable”或“MoveAssignable”的“T”声明一个“std::vector&lt;T&gt;”,只要您不尝试将任何元素放入其中。([Coliru 演示](http://coliru.stacked-crooked.com/a/45391a6367953af1))。 (2认同)