我想要一个函数,该函数将我不想修改的字符串向量作为输入。所以我考虑将
vector<string_view>
作为输入。但是,如果我这样做,我就无法再将 vector<string>
作为参数传递。
示例:
#include <vector>
#include <string>
#include <string_view>
using namespace std;
void takesStringViewVectorRef(vector<string_view> const & v) {}
int main ()
{
string_view strview; string str;
takesStringViewVectorRef({"a", "b", strview, str}); // works, cool!
vector<string> vec;
takesStringViewVectorRef(vec); // doesn't work
vector<const char *> vec2;
takesStringViewVectorRef(vec2); // doesn't work either
return 0;
}
这只是一个坏主意吗?我应该坚持使用
vector<string>
吗?我对此有点困惑
我想要一个函数,该函数将我不想修改的字符串向量作为输入。
如果您的函数打算输入您不修改的字符串向量,请将输入作为
const
引用传递,类似于您对 string_view
所做的操作:
void f(std::vector<std::string> const & v) {}
传递对
vector
的引用,无论它是string
还是string_view
的向量,都将具有相同的内存和时间性能。无论哪种方式,向量的内容都无法修改,因为您已将其作为 const
引用传递。如果您使用 string_view
,您将需要转换 string
的整个向量,这将花费更多时间。