[英]How to iterate a list of vector
如果我有一个对象向量的向量,如何检查A * myA是否在该向量内?
尝试这个...
#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;
}
这可能行不通:
vector<int> v;
. . .
for (int i=0; i<v.size(); i++) {
//---do a compare of v[i] with your object?
cout << v[i] << endl;
}
也许是这样的:
std::vector<A*> v;
for (std::vector<A*>::iterator it = v.begin(); it != v.end(); ++it) {
// Do comparison with *it to your myA...
}
这是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;
}
在问这样的问题时,总是提供一个相关的代码示例(即,声明要使用的数据类型)总是很高兴的。 这样,其他人更容易理解您想做什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.