C++iterator在container的begin时和end时分别--和++会怎么样?
2个回答
展开全部
在C++中使用容器,对iterator赋值begin和end,在clang下,如果当iterator=container.begin()时,再使用--iterator,这时iterator的值是正确的,如果再使用++iterator,还会变成原来的值。
测试代码如下:
int main()
{
std::vector<int> a;
a.push_back(1);
a.push_back(2);
std::vector<int>::iterator iter = a.begin();
--iter;
std::cout<<*iter<<std::endl; // 输出0(这里的值并不确定,刚开始是一个很大的负数)
--iter;
std::cout<<*iter<<std::endl; // 输出0
++iter;
std::cout<<*iter<<std::endl; // 输出0
++iter;
std::cout<<*iter<<std::endl; // 输出1
iter = a.end();
++iter;
std::cout<<*iter<<std::endl; // 输出(输出一个很大的负数)
--iter;
--iter;
std::cout<<*iter<<std::endl // 输出2
return 0;
测试代码如下:
int main()
{
std::vector<int> a;
a.push_back(1);
a.push_back(2);
std::vector<int>::iterator iter = a.begin();
--iter;
std::cout<<*iter<<std::endl; // 输出0(这里的值并不确定,刚开始是一个很大的负数)
--iter;
std::cout<<*iter<<std::endl; // 输出0
++iter;
std::cout<<*iter<<std::endl; // 输出0
++iter;
std::cout<<*iter<<std::endl; // 输出1
iter = a.end();
++iter;
std::cout<<*iter<<std::endl; // 输出(输出一个很大的负数)
--iter;
--iter;
std::cout<<*iter<<std::endl // 输出2
return 0;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询