您的位置:

深入探讨vector遍历

一、vector遍历方法

//声明一个vector
std::vector
    vec{1, 2, 3, 4};
//方法1:使用下标
for(int i = 0; i < vec.size(); ++i){
    std::cout << vec[i] << ' ';
}
//方法2:使用迭代器
for(auto it = vec.begin(); it != vec.end(); ++it){
    std::cout << *it << ' ';
}
//方法3:使用范围for循环
for(auto i : vec){
    std::cout << i << ' ';
}
   

vector是一种动态数组,其具有可变大小的数组容器,使用vector遍历一般有三种方法,分别是使用下标、使用迭代器和使用范围for循环。使用下标访问比其他方法稍微快一些,但需要注意边界问题;使用迭代器比较安全,可以访问vector中的任何元素;使用范围for循环代码简洁,但不能修改vector中元素的值。

二、vector遍历删除

1. vector遍历删除对象c

//声明一个vector
std::vector
    vec{'A', 'B', 'C', 'D'};
//迭代器遍历vector删除对象C
for(auto it = vec.begin(); it != vec.end();){
    if(*it == 'C'){
        it = vec.erase(it);
    }else{
        ++it;
    }
}
   

在遍历vector时,如果需要删除某个对象,可以使用vector中的erase函数进行删除。但是如果直接从vector中删除会改变vector的大小,导致迭代器失效,从而遍历不能正常完成。解决方法是使用迭代器的erase函数删除对象,遍历完成后才进行删除,这样就不会改变vector的大小。

2. vector遍历后要删除元素

//声明一个vector
std::vector
    vec{1, 2, 3, 4};
//迭代器遍历vector后删除所有数据
for(auto it = vec.begin(); it != vec.end();){
    it = vec.erase(it);
}
   

在遍历结束后,如果需要删除vector中的所有元素,也可以使用迭代器的erase函数进行删除。需要注意的是,erase函数会返回一个迭代器,指向删除后的下一个对象,因此需要将迭代器重新赋值。

三、vector函数

1. vector erase

//声明一个vector
std::vector
    vec{1, 2, 3, 4};
//迭代器遍历vector删除下标为2的元素
vec.erase(vec.begin() + 2);
   

可以使用vector中的erase函数来删除vector中的元素,其参数可以是一个迭代器或一个指向vector中某个元素的指针地址,也可以指定删除的元素数量。

2. vector删除最后一个元素

//声明一个vector
std::vector
    vec{1, 2, 3, 4};
//使用pop_back删除最后一个元素
vec.pop_back();
   

如果仅需要删除vector中的最后一个元素,可以使用pop_back函数,该函数会将vector中的最后一个元素删除。

四、总结

本文从vector的遍历方法、删除操作以及常用函数三个方面深入探讨了vector的使用。对于vector的遍历,我们可以使用下标、迭代器和范围for循环三种方法,需要根据实际情况进行选择。在遍历过程中,如果需要删除某个元素,可以使用迭代器的erase函数进行删除。如果需要删除整个vector中的所有元素,需要在遍历完成后再进行删除。