【发布时间】:2017-01-20 03:33:15
【问题描述】:
我正在处理一个 C++ 项目,我需要在其中搜索一个向量,而忽略那些已经访问过的向量。如果已访问过一个,我将其对应的已访问设置为 1 并忽略它。哪种解决方案更快?
解决方案 1:
vector<string> stringsToVisit;
vector<int> stringVisited;
for (int i = 0; i < stringToVisit.size(); ++i) {
if (stringVisited[i] == 0) {
string current = stringsToVisit[i];
...Do Stuff...
stringVisited[i] = 1;
}
}
或
解决方案 2:
struct StringInfo {
string myString;
int visited = 0;
}
vector<StringInfo> stringsToVisit;
for (int i = 0; i < stringsToVisit.size(); ++i) {
if (stringsToVisit[i].visited == 0) {
string current = stringsToVisit[i].myString;
...Do Stuff...
stringsToVisit[i].visited = 1;
}
}
【问题讨论】:
-
您对每个版本都进行了剖析吗?
-
我想你忘了在解决方案 2 中声明
stringVisited -
更清楚地说明您要解决的问题。按照目前的逻辑,第二次你将没有什么可参观的。
标签: c++ performance vector