如果我们得到一些不清楚的迭代器,我们可以得到vector的实际地址或该向量的begin()/ end()
vector<int> VEC1 (20);
vector<int> :: iterator it1 = VEC1.begin()+3;
vector<int> VEC2 (30);
vector<int> :: iterator it2 = VEC2.begin()+8;
vector<int> :: iterator it3 = (/**/)? it1 : it2 ;
// now, we are not clearly know what vector which it 3 refer
// this part can i do this ?, need something like that
vector<int> :: iterator it4 = begin( vector that it3 point to )
vector<int> :: iterator it4 = end( vector that it3 point to )
// Q : have any function which can do like last to line of code
谢谢你的天才。
希望你能编辑我的问题,我很难安排我的话。
//
我能得到(新迭代器)引用向量的开头(某些迭代器)指向
答案 0 :(得分:0)
不存在正常和通用的解决方案。不同的容器使用其项目的不同分配器。但是,您可以声明指向容器的指针并在决定它时存储它3
vector<int> VEC1 (20);
vector<int> :: iterator it1 = VEC1.begin()+3;
vector<int> VEC2 (30);
vector<int> :: iterator it2 = VEC2.begin()+8;
vector<int> *pVEC = NULL;
vector<int> ::iterator it3;
if (condition)
{
it3 = it1;
pVEC = &VEC1;
}
else
{
it3 = it2;
pVEC = &VEC2;
}
vector<int> ::iterator it4 = pVEC->begin();
vector<int> ::iterator it5 = pVEC->end();
您仍然不知道您正在使用的容器的上下文,但操作与it3,it4和it5现在是安全,因为它们可以保证引用一个容器。