在函数中传递只读向量时,详细程度是否真的值得?
const vector<const string>&
我通常有
const vector<string>&
已经足够冗长了。现在我看到有些人使用第一个详细版本 我不知道它值得吗?
答案 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>>&