C++STL容器之vector

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;
}
发布了12 篇原创文章 · 获赞 19 · 访问量 366

猜你喜欢

转载自blog.csdn.net/Mrs_Jiangmengxia/article/details/104895555