我有一个存储{1,2,3,4,5}的向量。我尝试打印*(vec.end())
并获得了结果6。我不知道该怎么解释。同样,打电话vec.find(500)
给结果6。为什么我得到这个号码?
#include<iostream>
#include<iterator>
#include<set>
#include<map>
int main()
{
int a[] = {1,2,3,4,5};
std::set<int> set1(a,a+sizeof(a)/sizeof(int));
for (std::set<int>::iterator itr=set1.begin();itr!=set1.end();++itr){
std::cout << *itr << std::endl;
}
//std::pair<std::set<int>::iterator, bool> ret;
//ret = set1.insert(1);
//std::cout << *(ret.first) << "first;second" << ret.second << std::endl;
std::set<int>::iterator itr1 = set1.begin();
set1.insert(itr1,100);
std::advance(itr1,3);
std::cout << *itr1 << std::endl;
std::cout << *(set1.find(500)) << std::endl;
std::cout << *(set1.end()) << std::endl;
}
vec.end()
不指向最后一个元素,而是指向最后一个元素。
您没有访问向量中的最后一个元素。相反,您要取消引用“无效”迭代器,该迭代器是未定义的行为,在这种情况下,结果是向量中的无效索引。
vec.find
如果找不到搜索到的元素,则返回结束迭代器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句