在函数中传递只读向量时,详细程度是否真的值得? const vector <const string =“”>&amp; </const>

时间:2014-01-28 21:11:04

标签: c++ c++11

在函数中传递只读向量时,详细程度是否真的值得?

const vector<const string>&

我通常有

const vector<string>&

已经足够冗长了。现在我看到有些人使用第一个详细版本 我不知道它值得吗?

2 个答案:

答案 0 :(得分:0)

不是这种情况。根据程序使用的实际类型声明参数类型 - const vector<string>& const是传递的,以包含其包含的字符串。也就是说,const vector<string>&不会返回对其string s的可变引用。

具体而言,const vector<const string>&将是非常罕见的事件(即在许多代码库中不存在),并且转换为通常会很痛苦和/或成本高昂。仅在输入不需要转换的情况下使用它(例如来自std::vector<std::string>)。

答案 1 :(得分:0)

正如评论中所讨论的那样const vector<const string>&可能无法编译,如果存在,则会产生很多其他问题。

如果你真的需要保证constness,你可以选择:const vector<const string*>&

或者:const vector<shared_ptr<const string>>&