对于我正在使用的任何 STL 容器,如果我使用迭代器的默认构造函数声明一个迭代器(此特定容器类型),则迭代器将被初始化为什么?
例如,我有:
std::list<void*> address_list;
std::list<void*>::iterator iter;
iter 将被初始化为什么?
按照惯例,容器的“NULL 迭代器”用于指示没有结果,比较结果等于container.end()
.
std::vector<X>::iterator iter = std::find(my_vec.begin(), my_vec.end(), x);
if (iter == my_vec.end()) {
//no result found; iter points to "nothing"
}
然而,由于默认构造的容器迭代器不与任何特定容器关联,因此它没有好的值。因此,它只是一个未初始化的变量,对其进行的唯一合法操作是为其分配一个有效的迭代器。
std::vector<X>::iterator iter; //no particular value
iter = some_vector.begin(); //iter is now usable
对于其他类型的迭代器,情况可能并非如此。例如,如果istream_iterator
,默认构造的迭代器表示(比较等于)istream_iterator
已到达输入流的 EOF。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)