Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在函数中传递只读向量时,这种冗长真的值得吗?常量向量<;常量字符串>&;_C++_C++11 - Fatal编程技术网

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过分冗长也有代价。即使你不认为这必然会影响工程师,但这确实会让他们中的许多人感到恼火;-)