我想知道是否有任何函數比較2個字符串向量以返回不同(或相同)元素的數量?或者我必須對它們進行迭代並逐項測試。
謝謝。比較兩個向量C++
回答
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));
或者,如果你不想進行排序:
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));
您可能需要使用一個多重是否有可能是一個矢量重複。
好想法:) – Kobe 2011-03-07 22:16:26
好的,只需要添加#include
我不知道現有的功能,但自己寫一個不應該太麻煩。
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;
}
注
- 略
std::
爲簡潔前綴 - 此功能需要更新,如果它要處理不同長度的
vector<string>
實例
看一看set_difference()和set_intersection() 。在這兩種情況下,您都需要事先對容器進行排序。
謝謝你,我會看他們 – Kobe 2011-03-07 22:13:03
- 1. C++:比較兩個向量
- 2. 如何比較兩個向量,在C++
- 3. 比較兩個向量
- 4. 比較兩個向量
- 5. 比較兩個變量C
- 6. C++比較向量
- 7. 在Matlab中比較兩個向量
- 8. 八度:比較兩個向量
- 9. 比較兩個向量的元素
- 10. 比較兩個二進制向量
- 11. Matlab的:比較兩個向量
- 12. 比較兩個矢量方向MATLAB
- 13. torch.Tensor操縱 - 比較兩個向量
- 14. 將C++中的兩個向量與模板類相比較
- 15. 比較兩個向量字符串的相似性C++
- 16. 比較兩個bash變量
- 17. PowerShell:比較兩個變量
- 18. PHP - 比較兩個變量
- 19. 比較兩個TDateTime變量
- 20. 比較兩個變量
- 21. 比較兩個類c#
- 22. 比較兩個ip與C#
- 23. 比較兩個列表C#
- 24. 比較C兩個陣列++
- 25. 比較兩個數組C++
- 26. 比較兩個列表C#
- 27. 比較兩個stringbuilders usng C#
- 28. C#比較兩個集合
- 29. C++比較向量,更快的方式
- 30. 比較兩個向量可能會給我一個錯誤
您是否需要比較具有相同索引的元素或者是否具有檢測不同位置匹配的算法? – 2011-03-07 22:08:53
它需要檢測匹配是 – Kobe 2011-03-07 22:09:45
如何檢測所有元素在不同位置的匹配?在這種情況下,矢量的數量是無關緊要的。你確定這就是你想要的嗎? – 2011-03-07 22:16:09