欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++STL容器之vector

程序员文章站 2022-03-22 20:00:53
...

C++STL容器之vector

一般复试机试默认是C++,不能带模板,所以会用STL是非常重要的,接下来就讲讲STL容器vector的基本用法

vector的定义

使用vector的标准模板,就需要在添加vector的头文件,#include。定义如下typename是指定义的向量元素类型,name是定义向量的名字。

vector<typename> name	

vector的初始化

vector<int> a(10); // 定义有10个整形的向量a
vector<int> a(10,1)//定义有10个整形的向量a,并且每个元素值都为1
b[] = {1, 2, 3 ,4};
vector<int>a(b, b+4);

vector元素访问

  • 可以像数组一样通过元素下标进行访问,下标从0-size()-1

    vector<int>a(5,1);
    for(int i = 0; i < a.size(); i++)
    	printf("%d ", a[i]);
    
  • 可以通过迭代器访问,迭代器类似于指针

    vector<int>a(5,1);
    vector<int>:: iterator it;
    for(int it = a.begin(); it != a.end(); it++)
    	printf("%d ", *it);
    

vector元素操作

vector<int> a, b;
a.empty()	//判断a是否为空,空则返回true,非空则返回false
a.size()    //返回向量元素的个数
a.push_back() //向尾部添加新的元素
a.pop_back()  //删除尾部的元素
a.clear()    //清空a中的元素
a.back()	//返回a的最后一个元素
a.front()   //返回a的第一个元素
a.insert(a.begin()+1, 5)	//在a的第2个元素的位置插入一个元素5
a.insert(a.begin(), 3, 1)   // 在a的第1个元素的位置插入3个元素都是1
a.erase(a.begin(), a.begin()+3) //删除a.begin()到a.begin()+3的元素(不包括a.begin()+3)

vector的一些算法

#include<algorithm>
vector<int> a;
sort(a.begin(), a.end()); // 把a.begin()到a.end()的元素进行从小到大排序(不包括a.end()元素)
find(a.begin(), a,end(), 1); //把a.begin()到a.end()的元素中查找1的元素返回它的位置

样例

题目连接

上代码

#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
vector<int> numberE;
vector<int> numberG;
int Sum(int x)
{
    int sum = 0;
    for(int i = 1; i < x; i++)
        if(x % i == 0)    sum += i;
    return sum;
}
int main()
{
    for(int i = 2; i <= 60; i++)
    {
        if(i == Sum(i))
            numberE.push_back(i);
        else if(i < Sum(i))
            numberG.push_back(i);
    }
    printf("E:");
    for(int i = 0; i < numberE.size(); i++)
        printf(" %d", numberE[i]);
    printf("\n");
    printf("G:");
    for(int i = 0; i < numberG.size(); i++)
        printf(" %d", numberG[i]);
    printf("\n");
    return 0;
}
相关标签: c++ stl