比較在這個例子中:在C++中的RNG實際成本與REF
#include <iostream>
#include <vector>
#include <string>
typedef std::vector<std::string> vs;
vs test1()
{
vs strings;
strings.push_back("a");
strings.push_back("b");
strings.push_back("c");
return strings;
}
void test2(vs& strings)
{
strings.push_back("a");
strings.push_back("b");
strings.push_back("c");
}
int main()
{
vs data = test1();
test2(data);
return 0;
}
我測試兩種方式來填充字符串的向量。 我認爲,在第一種情況下,我們複製向量,在第二種情況下,它可能更好,因爲我們只給出向量的引用。 那麼,什麼是好方法,副本是電腦的一個非常大的成本?
謝謝你的回答!
大多數現代編譯器會生成可能效率相同的代碼。雖然請注意,你最終會在'data'中包含6個字符串 - 這是你期望的嗎? – Nick
你的功能做不同的事情。如果你想保證他們做同樣的事情,你將不得不在第一個版本中檢查和/或清除輸入,這會產生一些開銷。你也必須記錄它。 – juanchopanza
@ godel9不幸的是,選擇的答案似乎暗示了使用這兩個選項中較差的一個。 – juanchopanza