Eri*_*rik 43
std::sort(v1.begin(), v1.end());
std::sort(v2.begin(), v2.end());
std::vector<string> v3;
std::set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter(v3));
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想排序:
std::set<string> s1(v1.begin(), v1.end());
std::set<string> s2(v2.begin(), v2.end());
std::vector<string> v3;
std::set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(), std::back_inserter(v3));
Run Code Online (Sandbox Code Playgroud)
如果向量中可能存在重复项,则可能需要使用多重集.
我不知道现有的函数,但自己编写一个应该不会太麻烦。
int compare(const vector<string>& left, const vector<string>& right) {
auto leftIt = left.begin();
auto rightIt = right.begin();
auto diff = 0;
while (leftIt != left.end() && rightIt != right.end()) {
if (*leftIt != *rightIt) {
diff++;
}
leftIt++;
rightIt++;
}
// Account for different length vector instances
if (0 == diff && (leftIt != left.end() || rightIt != right.end())) {
diff = 1;
}
return diff;
}
Run Code Online (Sandbox Code Playgroud)
笔记
std::为简洁起见省略前缀vector<string>如果要处理不同长度的实例,则需要更新此函数| 归档时间: |
|
| 查看次数: |
44947 次 |
| 最近记录: |