假设我有struct
这样:
struct S
{
int a;
string b;
//....
};
我有一个这个struct
的向量:
vector<S> vect(100);
我希望random_access iterator
指向所有vect
int的成员(在本例中为a)
我该如何实施呢?
答案 0 :(得分:2)
只需打包std::vector<S>::iterator
。除operator*
之外,所有运营商都可以直接转发,当然这必须返回S::a
答案 1 :(得分:1)
一种优雅的方式可能是操作符*重载,直接在struct:
中struct S {
int a;
string b;
inline int operator*() const {
return a;
}
};
通过这种方式,当你在向量中迭代S元素时,你可以用这种简单的方式访问'a':
std::vector<S*> vect(100);
std::vector<S*>::iterator it = vect.begin();
for(; it != vect.end(); ++it) {
std::cout << **it;
}
with: