檢查字符串的stl向量是否包含 特定字符串的最有效方法是什麼?檢查字符串是否作爲向量中的元素存在
回答
明顯但可能過於緩慢的解決方案是std::find(vec.begin(), vec.end(), your_string);
如果你的載體沒有太大變化,但排序第一,然後用binary_search
,lower_bound
,upper_bound
,或equal_range
。如果您的矢量變化很大,請考慮使用set
/multiset
(或者如果需要,請使用map
/multimap
)。
根據您的需要,散列(unordered_set
)可能也適合,但它與您的初始容器選擇比正常排序的容器更大的不同,並且不在C++ 0x之前提供(您可以輕鬆獲得它)。
或者'multiset'如果該值可能存在多次。 – Will 2011-03-30 17:24:49
速度更快的可能是散列表或前綴樹(又名trie)。前者或多或少是標準的:C++ 0x中的'unordered_set'(Boost中也可用)或老派STL中的'hash_set'。你可能需要編寫你自己的版本,或者尋找一個好的實現。 – 2011-03-30 17:29:39
使用std :: find查找字符串。
std::find(stringVector.begin(), stringVector.end(), "specificStringToFind") ;
vector<string> v;
vector<string>::iterator it;
it = std::find(v.begin(), v.end(), "stringToFind");
使用std::find
找到目標字符串。這是一個線性搜索,所以要小心搜索大型矢量。
要了解向量包含目標與否,使用:
bool isPresent = (std::find(vec.begin(), vec.end(), target) != vec.end());
這裏是一個C++ 11的替代:
#include<functional>
#include<vector>
#include<string>
std::vector<std::string> v;
bool elementFound = std::any_of(v.begin(), v.end(), [](std::string const& s) {return s=="string-to-search";});
隨意調整lambda函數是什麼你想,例如
[](std::string const& s) {return s.size()>3;}
- 1. 檢查字符串矢量是元素
- 2. PHP帶字符串並檢查該字符串是否作爲變量存在
- 3. 檢查向量中是否存在元素R
- 4. 如何檢查查詢字符串中是否存在使用javascript的元素?
- 5. 查找向量<string>中的所有元素是否在字符串中
- 6. R:檢查一個向量的多個元素是否出現在字符串向量中
- 7. python:檢查子字符串是否在字符串元組中
- 8. 檢查向量中元素是否比其他向量
- 9. 檢查字符串數組元素是否爲空
- 10. 檢查字符串中是否存在多個字符串
- 11. 檢查字符串中是否存在字符串java
- 12. 檢查字符串元素是否存在於使用Python的列表中?
- 13. 檢查字符串變量是否爲某個字符串值
- 14. 檢查字符串是否包含數組中的元素
- 15. 查找字符串是否存在於結構向量中
- 16. 查找向量的向量元素是否存在於另一個向量中
- 17. 檢查mongodB中是否存在元素
- 18. 檢查Selenium中是否存在元素
- 19. 檢查DOM中是否存在元素
- 20. C++檢查向量a是否包含向量b的元素
- 21. 如何檢查常量中是否存在字符串
- 22. 如何檢查字符串的第一個元素是否在TCL中爲零?
- 23. 在向量中查找唯一一組字符串,其中向量元素可以是多個字符串
- 24. Julia:檢查一個向量中的元素是否在另一個向量中
- 25. 檢查字符串是否已經存在於工作表中
- 26. 檢查字符串是否包含列表中的元素並存儲它
- 27. jQuery:檢查字符串中是否存在特殊字符
- 28. R:找向量的字符串作爲元素的多個字符串
- 29. 檢查向量元素是否在列表的相應元素中
- 30. 如何檢查字符串的向量是否平衡?
如果檢查你的貨櫃物品的存在是你計劃不得不經常做的事情,你可能要考慮使用一個std ::設置,而不是當然,你不想重複的(提供您的設置中的字符串)。 std :: set有一個find()方法,其平均複雜度保證爲log(n)。 – Fred 2011-03-30 17:25:26