使用STL迭代器而不初始化它

Kon*_*rad 2 c++ iterator scope stl

我想做这样的事情:

container::iterator it = NULL;

switch ( eSomeEnum )
{
case Container1:
it = vecContainer1.begin();
break;

case Container2:
it = vecContainer2.begin();
break;
...


}

for( ; it != itEnd ; ++it )
{ 
..
}
Run Code Online (Sandbox Code Playgroud)

但是我无法创建迭代器并将其初始化为NULL.有什么方法可以做到这一点吗?理想情况下,我只是在交换机中创建并分配迭代器,但它会立即超出范围.

jpa*_*cek 11

你根本不需要初始化它,因为迭代器是DefaultConstructible.


Eva*_*haw 6

你需要做的就是改变

container::iterator it = NULL;
Run Code Online (Sandbox Code Playgroud)

container::iterator it;
Run Code Online (Sandbox Code Playgroud)

我认为您的代码将按预期工作.

  • 这个答案基本上与被接受的答案相同.怎么回事?我很乐意纠正错误. (2认同)