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(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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章