C++-在for循环中使用引用更好吗



如果我有这样的东西:
vector<string> v{"lorem", "ipsum"};

这样循环是否更好:
for(string s : v){ ... }

或类似于:
for(string &s : v){ ... }

所以我的问题是,这种类型的循环是否复制了数据(因此最好使用引用(?

它们在功能上非常不同

试试这个

vector<string> v{ "lorem", "ipsum" };
for (string s : v) { s = "dd"; }
cout << v[0];
for (string& s : v) { s = "yy"; }
cout << v[0];

你会看到第一个给你一个元素的副本

第二个是对向量中元素的引用。

因此,使用哪一个真正取决于你想做什么。

如果你只是在阅读,那么第二个更好,因为它不会创建副本(我相信字符串在这种情况下非常有效,但在一般情况下也是如此(

最新更新