首页 > 编程语言 > 详细

C++ STL基本容器的使用

时间:2018-07-10 21:00:12      阅读:246      评论:0      收藏:0      [点我收藏+]

1、关联容器和顺序容器

  C++中有两种类型的容器:顺序容器和关联容器,顺序容器主要有:vector、list、deque等。关联容器主要有map和set。如下图:

技术分享图片

 

1、vector基本使用

 

技术分享图片
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std;

//利用模版进行输出
template <typename T>
void print(vector<T> a)
{
    //输出方法1
    for(auto i:a)
    {
        cout<<i<<\t;
    }
    cout<<endl;
    //输出方法2
    typename vector<T>::iterator it;//前面要加typename,要不会出错
    for(it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<\t;
    }
    cout<<endl;
    //输出方法3,这里只是想说这样也可以输出
    cout<<a[0]<<\t<<a[1]<<\t<<a[2]<<\t<<a[3]<<\t<<a[4]<<endl;
    cout<<"********************"<<endl;
}

int main()
{
    /*vector初始化对象*/
    vector<int> v1;//v1是一个空的vector,潜在的元素是int类型,执行时,默认初始化
    v1={1,2,3,4,5};
    print(v1);

    vector<int> v2(v1);//相当于vector<int> v2=v1
    print(v2);

    vector<char> v3(5,a);//v3中含有5个a字符
    print(v3);

    vector<string> v4{"aa","ss","dd","ff","gg"};//v4赋值
    print(v4);

    vector<float> v5(5);//出事化v5,为5个0.0
    v5[0]=1.1;
//    v5[6]=8.8; vector可以利用下标访问,但是不能使用下标添加元素
    print(v5);

/*-------------------------------------------------------------------------------*/

    /*vector操作*/
    vector<string> v6;
    if(v6.empty())//vector是否为空
    {
        cout<<"------"<<"v6 is empty"<<"-------"<<endl;
    }
    string s="qwe";
    for(int i=0;i<5;i++)
    {
        v6.push_back(s);//末尾添加一个元素
    }
    v6.pop_back();//末尾删除一个
    v6.push_back("1234");
    print(v6);
    cout<<"------"<<"v6的长度为:"<<v6.size()<<"------"<<endl;
    v6=v4;//拷贝v4中的元素赋值到v6中
    if(v6==v4)
    {
        cout<<"------"<<"v6==v4"<<"------"<<endl;
    }

/*-------------------------------------------------------------------------------*/

    /*vector常用操作*/
    vector<int> array={1,6,2,6,3,6,4,6,5,6};
    array.erase(remove(array.begin(),array.end(),6),array.end());//需添加头文件algorithm
    /*remove函数使用:
     *remove(始地址,终地址,需要移除的元素),返回是被替换的数第一个数的地址,比如本题vector
     *原始数组为:[1,6,2,6,3,6,4,6,5,6],使用remove函数后为[1,2,3,4,5,6,4,6,5,6],
     *返回的地址为位置5上(0开始)的6的地址,如下输出数字5.
    cout<<*(remove(array.begin(),array.end(),6)-1)<<endl;*/

    /*删除6的另一种方法
    vector<int>::iterator it1;
    it1=array.begin();
    for(it1=array.begin();it1!=array.end();it1++)
    {
        if(6==*it1)
        {
            array.erase(it1);//删除掉it1时,it1会指向下一个数,也就是6,然后再自加会指向下一个6,也就是邻接的6是删除不掉的
            it1--;//加上这一句就不会出错
        }
    }*/
    print(array);

    vector< vector<int> > intVV;//vector实现二维数组
    vector<int> intV;
    int i,j;
    for(i=0;i<3;++i){
        intV.clear();
        for(j=0;j<5;++j)
            intV.push_back(i*10+j);
        intVV.push_back(intV);
    }

    for(i=0;i<3;++i){
        for(j=0;j<5;++j)
            cout<<intVV[i][j]<<\t;
        cout<<endl;
    }
    return 0;
}
View Code

 

C++ STL基本容器的使用

原文:https://www.cnblogs.com/ybf-yyj/p/9287768.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!