給定兩個整數向量,如何確定第一個向量中是否存在某個元素?查找第二個向量中的向量元素
回答
我想這樣的事情應該工作:
std::vector<int> v1,v2;
if(std::find_first_of(v2.begin(),v2.end(),v1.begin(),v1.end()) != v2.end())
std::cout << "found!\n";
這正是我要找的 – dimba 2009-12-10 18:20:02
雖然在O(v1.size()* v2.size())這個複雜度上看起來可能更糟糕,但它對於小集合並不重要,而且你也不需要必須事先修改(排序)你的載體。 – 2009-12-10 18:21:54
你可以採取兩個向量的set_intersection,然後檢查是否產生交集爲空:
std::sort(v1.begin(), v1.end());
std::sort(v2.begin(), v2.end());
std::set_intersection(v1.begin()
, v1.end()
, v2.begin()
, v2.end()
, std::back_inserter(v3));
bool containsElements = !v3.empty();
set_intersection
可以#include <algorithm>
中找到set_intersection
工作,兩個向量必須先排序。
值得注意的是,v1和v2必須進行排序才能正常工作。 – 2009-12-10 18:11:33
值得注意的是,你應該更喜歡'v3.empty()'到'v3.size()== 0'。 – 2009-12-10 18:19:12
@Charles Bailey和@Matthie M .:我加了這兩個,謝謝。 – 2009-12-11 00:40:21
我覺得是這樣的:
bool contains(const std::vector<int>& vec, int val){
for(std::vector<int>::const_iterator it=vec.begin(); it!=vec.end(); ++it){
if(*it==val){
return true;
}
}
return false;
}
bool contains(const std::vector<int>& from, const std::vector<int>& in){
for(std::vector<int>::const_iterator it=from.begin(); it!=from.end(); ++it){
if(contains(in, *it)){
return true;
}
}
return false;
}
// Example
std::vector<int> a;
std::vector<int> b;
a.push_back(2);
a.push_back(1);
b.push_back(0);
b.push_back(1);
bool contains = contains(a, b);
- 1. 查找向量的向量元素是否存在於另一個向量中
- 2. 查找向量中的重複元素
- 3. 查找向量中的特定元素
- 4. 查找結構向量中的元素
- 5. 指向元素的向量
- 6. 在MATLAB中查找另一個向量中元素的位置
- 7. 根據R中羣集第一向量聚類第二向量
- 8. 按C++中的第一個元素對中的第二個元素對一個對的向量排序?
- 9. 從向量B的每個元素中減去向量A的每個元素
- 10. Julia:檢查一個向量中的元素是否在另一個向量中
- 11. 在一個向量中查找元素之間的序列
- 12. 如何查找至少2個向量中常見的元素?
- 13. 將元素從一維向量添加到二維向量
- 14. 在未排序的向量中查找第K個最小元素(迭代式)
- 15. Matlab,向量中的元素
- 16. 檢查向量中元素是否比其他向量
- 17. 清理向量元素向量
- 18. Angular指令:指向第二個元素
- 19. 什麼是向量中第二個到最後一個元素的代碼
- 20. 向另一個向量廣播特定向量元素
- 21. 從向量元素
- 22. C++檢查向量a是否包含向量b的元素
- 23. 檢查vetcor的元素是否在R中的第二個向量的元素之間
- 24. 將一個向量的元素複製到另一個向量
- 25. 向量的每個元素添加到另一個向量
- 26. 限制向量中元素的數量
- 27. 更新向量中的單個元素
- 28. 如何用一個向量中的元素替換R中另一個元素的向量元素?
- 29. Java:向多個時間向多個向量添加元素到向量從HashMap向我添加元素
- 30. 按第一個元素排序向量,然後按C中第二個元素排序C
他們是排序,可他們的地方進行排序或做他們必須留在他們目前的訂購? – 2009-12-10 18:02:55
這是功課嗎?如果是,它應該被標記爲這樣。 – Andres 2009-12-10 18:04:32
你有複雜性約束嗎? – philsquared 2009-12-10 18:06:29