1.size()返回的确实是长度,但不能拿来和迭代器作长度判定
2.迭代器和指针是包含关系,指针是迭代器的具象化,指针具备了所有迭代器的特点,但是迭代器是一个抽象概念,要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。
换言之,不能用指针的方法去定义迭代器,只能用指针的移位方法去操作迭代器,且一般使用迭代器去指向一个数组最好让迭代器指向vector的begin和end,这样就可以实现遍历,可以参考下列方法:
insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele
insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count个元素ele
erase(const_iterator pos); //删除迭代器指向的元素
erase(const_iterator start, const_iterator end);//删除迭代器从start到end之间的元素
clear(); //删除容器中所有元素
原文链接:https://blog.csdn.net/zxy131072/article/details/94558933
删除有序数组中的重复项
相关力扣题目解题代码:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
auto a = nums.begin();
auto b = nums.begin();
while(b < nums.end()){
if(*a == *b){
b++;
continue;
}
else if(*a != *b){
*(a + 1) = *b;
a++;
b++;
}
if(b == nums.end()) break;
}
nums.erase(a + 1, nums.end());
return nums.size();
}
};
使用auto是因为迭代器的数据类型不方便指定,所以直接auto比较省事,当b没有指向vector的最后一个元素时,才进行下列的判定,最后擦除所有多余的元素进行输出。