如何在C ++函数中传递只读向量?
实现这一目标的一种方法是常规方式const&
const vector<string>& input
但我想知道我应该这样做:
const vector<const string&>& input
我不确定哪一个更好。基本上我想通过 一个矢量只用于阅读目的,我想有效地做到, 并避免不必要的副本。
答案 0 :(得分:3)
在C ++中无法使用引用向量,根本不会编译(因为没有存储就可以实现引用)。
除此之外,即使你有可能只是简单地将std::vector<T>
转换为std::vector<T&>
或std::vector<T*>
(这是可能的)。
现在除了技术方面之外:没有必要这样做。它实际上会产生更多的开销。如果您传递对向量的引用,则其数据完全保持不变。唯一的操作是向量堆栈中地址的PUSH
。
请继续使用您的第一个解决方案