在函数中传递只读向量时,冗长真的值得吗?const vector<const string>&
Is the verbosity really worth it when passing read only vector in function? const vector<const string>&
传递仅读取函数中的向量时,词汇真的值得吗?
const vector<const string>&
我通常有
const vector<string>&
已经足够详细了。现在我看到有些人使用第一个详细版本我想知道这值得吗?
在这种情况下不是。根据程序使用的实际类型来声明参数类型-const vector<string>&
是const
转移词以包括其包含的字符串。也就是说,const vector<string>&
不会返回其string
s。
具体来说,const vector<const string>&
将是非常罕见的发生(即在许多代码库中不存在),通常会痛苦和/或昂贵的转换。仅在输入不需要转换(例如std::vector<std::string>
)的情况下使用它。
如评论中所讨论的const vector<const string>&
可能不会编译,如果这样做会产生很多其他问题。
但是,如果您确实必须使用Gurantee Constness,则可以使用:const vector<const string*>&
或:const vector<shared_ptr<const string>>&