C++学习Vol2:vector关于其函数使用的补充

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的最后一个元素时,才进行下列的判定,最后擦除所有多余的元素进行输出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值