C++ vector向量的查找和删除

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/89784654

一 在vector中查找元素

1 代码

#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
int main(){
    vector<int> vec;
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    vec.push_back(4);
    vec.push_back(5);
    vector<int>::iterator iter=find(vec.begin(),vec.end(),3);
    if ( iter==vec.end())
        cout << "Not found" << endl;
    else
        cout << "Found" << endl;
    return 0;
}

2 运行

[root@localhost charpter03]# g++ 0312.cpp -o 0312
[root@localhost charpter03]# ./0312
Found

3 说明

使用find函数在vector中查找。注意find函数并不属于vector的成员,而存在于算法中,所以应当加上头文件#include<algorithm>

二 vecrot的删除函数说明

1 点睛

vector的删除,可以有erase或pop_back函数。erase可以删除指定元素,而pop_back只能删除向量的最后一个数据。

2 erase函数

函数原型:

iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );

函数功能:

erase删除vector容器中的指定元素

第1个函数的作用:删除vector容器中position处的的元素。

第2个函数的作用:删除vector容器中[first,last)之间的元素。

函数参数:

position:迭代器,指向要删除元素。

first:迭代器,指向要删除[first,last)之间元素的第1个元素。

last:迭代器,指向要删除[first,last)之间元素的最后1个元素。

函数返回值:

函数返回删除vector中最后被删除元素中的下一个位置。

三 使用erase删除vector中某个元素

1 代码

#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
int main(){
    vector<int> vec;
    vec.push_back(1);
    vec.push_back(3);
    vec.push_back(3);
    vec.push_back(4);
    vec.push_back(5);
    vector<int>::iterator iter=vec.begin();
    for(;iter!=vec.end();){
        if(*iter==3){
            iter=vec.erase(iter);
        }else{
            ++iter;
        }
    }
    for(iter=vec.begin();iter!=vec.end();iter++){
        cout<<*iter<<" ";
    }
    return 0;
}

2 运行

[root@localhost charpter03]# g++ 0313.cpp -o 0313
[root@localhost charpter03]# ./0313
1 4 5 [root@localhost charpter03]

3 说明

for语句条件里面删除元素时,返回值指向已删除元素的下一个位置,不是删除元素时,则直接进行++操作。

四 vector的pop_back函数使用

1 代码

#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
int main(){
    vector<int> vec;
    for(int i=0;i<10;i++)
        vec.push_back(i);
    vector<int>::iterator iter=vec.begin();
    for(iter=vec.begin();iter!=vec.end();iter++){
        cout<<*iter<<" ";
    }
    cout<<endl;
    vec.pop_back();
    for(iter=vec.begin();iter!=vec.end();iter++){
        cout<<*iter<<" ";
    }
    cout<<endl;    
    return 0;
}

2 运行

[root@localhost charpter03]# g++ 0314.cpp -o 0314
[root@localhost charpter03]# ./0314
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8

3 说明

首先定义了一个存放整型数的vector,里面存放了0到9,用pop_back函数,把最晚放入vector的9删除。

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/89784654
今日推荐