如果我有一個矢量對象矢量,我該如何檢查A * myA是否在該矢量內?如何迭代矢量列表
Q
如何迭代矢量列表
1
A
回答
5
嘗試......
#include <algorithm>
bool in_vector(const std::vector<A*>& vec, const A* myA)
{
std::vector<A*>::const_iterator end = vec.end();
return std::find(vec.begin(), end, myA) != end;
}
+2
'end'將需要是'const_iterator'。 – 2010-06-17 00:35:56
+0
@Mike很好找:) – 2010-06-17 00:36:33
0
這可能會或可能無法正常工作:
vector<int> v;
. . .
for (int i=0; i<v.size(); i++) {
//---do a compare of v[i] with your object?
cout << v[i] << endl;
}
0
也許是這樣的:
std::vector<A*> v;
for (std::vector<A*>::iterator it = v.begin(); it != v.end(); ++it) {
// Do comparison with *it to your myA...
}
0
這是wowus'答案的擴張因爲我認爲它更接近你想要做的事情:
#include <algorithm>
// let's call it simply TVectorVectorA and TVectorA
typedef std::vector<std::vector<A*> > TVectorVectorA;
typedef TVectorVectorA::value_type TVectorA;
bool in_vector(const std::vector<std::vector<A*> >& vec, const A* myA)
{
TVectorVectorA::const_iterator vend = vec.end();
// iterate through all 'top-level' vectors
for (TVectorVectorA::const_iterator it = vec.begin(); vend != it; ++it)
{
// check if the current TVector element contains myA
if (std::find((*it).begin(), (*it).end(), myA) != end)
{
return true;
}
}
return false;
}
給出一個相關的代碼示例總是很好的。當您提出這些問題時,您正在使用的數據類型的聲明)。這樣,其他人更容易理解你想要做什麼。
相關問題
- 1. C++:列表迭代器與矢量迭代器
- 2. 爲什麼列表迭代比矢量迭代C++
- 3. 矢量end迭代
- 4. 你將如何迭代矢量?
- 5. 如何增加矢量迭代器?
- 6. 如何獲得迭代器的矢量
- 7. 列D1中的迭代器2D矢量
- 8. 迭代通過矢量列C++
- 9. 迭代多的std ::矢量
- 10. 矢量擦除迭代
- 11. 二維矢量迭代器
- 12. 迭代的矢量蟒蛇
- 13. 矢量化迭代循環
- 14. 迭代通過矢量
- 15. 迭代通過矢量
- 16. 矢量迭代器不dereferencable
- 17. EXC_BAD_ACCESS何時使用矢量迭代器?
- 18. C++矢量迭代器不增量
- 19. 如何迭代JSON列表?
- 20. 如何Python列表迭代?
- 21. 如何迭代列表?
- 22. 如何迭代列表?
- 23. 如何迭代矢量矢量並在下面的場景中獲取輸出?
- 24. 的std ::矢量斷言失敗(矢量迭代器不兼容)
- 25. 將矢量迭代器存儲在另一個矢量內
- 26. 迭代矢量<矢量<Point>>
- 27. C++中的矢量迭代器
- 28. C++中的矢量迭代器
- 29. VC++矢量迭代器初始化
- 30. C++矢量迭代器錯誤
也許一些代碼會有所幫助。 – GManNickG 2010-06-16 23:46:13
一些澄清(可能與代碼)會很好。你的意思是你有一個指向某些struct A的向量向量? A類型是否相關,或者您的問題是否適用於void *? – Karmastan 2010-06-16 23:59:37