哪个是正确的:
我想创建一个
vector<const string>
还是const vector<string>
?我想创建一个
std::vector
,其中包含std::string
,并且我不会对其进行更改。但我不确定哪种方法更好,以及为什么。const std::vector<std::string>
。const std::string
不符合 CopyAssignable (C++11 之前) 或 MoveAssignable (C++11 及以后) 的要求,虽然从 表面上看,主要是因为它不是Destructible
的原因,就可以使用 std::vector<const std::string>
。const std::string
不是Destructible
,这可以从编译器错误消息中看出,它抱怨缺少有效的operator delete
:"no matching function for call to 'operator delete(const std::basic_string<char>*&)
"。理论上,您可以为不是CopyAssignable
或MoveAssignable
的T
声明std::vector<T>
,只要您不尝试放置任何元素即可(在Coliru上演示)。 - Casey
const vector<const string>
。当然,只有在需要vector
和string
的API时才需要这么麻烦;如果不需要,可以使用const char* const []
。 - Mike DeSimonestd::vector<const std::string>
不应该编译通过,这使得这个问题很容易... - Mooing Duck