C++ 在函数中传递只读向量时,这种冗长真的值得吗?常量向量<;常量字符串>&;
在函数中传递只读向量时,这种冗长真的值得吗C++ 在函数中传递只读向量时,这种冗长真的值得吗?常量向量<;常量字符串>&;,c++,c++11,C++,C++11,在函数中传递只读向量时,这种冗长真的值得吗 const vector<const string>& const向量& 我通常有 const vector<string>& const向量& 这已经足够冗长了。现在我看到一些人使用第一个详细版本 我想知道这值得吗?在这种情况下不值得。根据程序使用的实际类型声明参数类型-const vector&可传递以包含其包含的字符串。也就是说,常量向量&不返回对其字符串的可变引用 具体而言,const vecto
const vector<const string>&
const向量&
我通常有
const vector<string>&
const向量&
这已经足够冗长了。现在我看到一些人使用第一个详细版本
我想知道这值得吗?在这种情况下不值得。根据程序使用的实际类型声明参数类型-
const vector&
可传递以包含其包含的字符串。也就是说,常量向量&
不返回对其字符串的可变引用
具体而言,const vector&
将是一种非常罕见的情况(即在许多代码库中不存在),并且转换成它通常是痛苦和/或昂贵的。仅在输入不需要转换的情况下使用它(例如,从std::vector
)。如注释const vector&
中所述,它可能无法编译,如果编译,将产生许多其他问题
然而,如果你真的必须保证常数,你可以选择:constvector&
或者:constvector&
std::vector
甚至不编译。你在哪里看到那个版本的?实际上你可以创建向量,试试看。我用C++11,我试过了。事实上,我几天前就试过了,就在你发表评论之前又试过一次。这是我的:@user31131111 1)取决于编译器2)如果可以,您不能在任何情况下修改它way@EJP过分冗长也有代价。即使你不认为这必然会影响工程师,但这确实会让他们中的许多人感到恼火;-)