zoukankan      html  css  js  c++  java
  • 插入容器STL学习笔记(八) 序列式容器 共性

    改章节是一篇关于插入容器的帖子

        

    序列式容器

        单动态数组vector只合适在后面插入删除  , 其中有个特化vector<bool> 节省空间  8个元素一个字节 
    双端队列deque(多个动态数组)前后都合适插入删除   
    链表  list 插入删除都简单,但指定访问某个数据不方便

        

        除了可以应用标准容器个性函数外,序列式容器还可以应用以下函数:

        

    1构造函数,指定元素个数和初始值(初始值默许为零初始化)

        vector<int> vtest(3,4); //3个4

        vector<int> vtest2(3); //3个0

        

        

    2 函数

        插入: 插入多个相同值 insert(pos,n,element) , 插入区间中的数 insert(pos,pos_beg,pos_end)

        赋值: assign(n,element) ,assign(pos_beg,pos_end)

        调整大小:resize(n,element=零初始化) 第二个参数是默许采用零初始化的新增元素,有写则采用element停止初始化

        首尾: .front()  .back() 获得首尾元素

        增删: 在末端插入.push_back(element) ,  在末端删除(返回void,不返回值) .pop_back()  

        

        

    3  序列式容器个性例子,

        

        每日一道理
    成熟是一种明亮而不刺眼的光辉,一种圆润而不腻耳的音响,一种不需要对别人察颜观色的从容,一种终于停止了向周围申诉求告的大气,一种不理会哄闹的微笑,一种洗刷了偏激的淡漠,一种无须声张的厚实,一种并不陡峭的高度。
    #include<deque>
    #include <iostream>
    using namespace std;
    #include "show.h"
    #include <string>
    
    
    int main()
    {
    	
    		 
    	 //序列式容器特有的构造函数 
    	 deque<int> test(3,4); //3个4
    	 show(test.begin(), test.end());// 4 4 4
    	 
    	  deque<int> test2(3); //3个0
    	 show(test2.begin(), test2.end());// 0 0 0
    	 
    	
    	
    	deque<string> ds;
    //	deque< vector<int> > vs; //还可以这样定义 但  > >旁边要有空格
    	
    	/*末端插入 效率最高*/
    	ds.push_back("hello");//在末端插入
    	ds.push_back("world");
    	ds.push_back("cplusplus");
    	ds.push_back("abc");
    	show(ds.begin() , ds.end() , ','); //hello,world,cplusplus,abc,
    	
    	/*在指定地方插入*/
    	ds.insert(++++ds.begin(),2,"china");//在第三个元素前面插入2个china
    	show(ds.begin() , ds.end() , ',');//hello,world,china,china,cplusplus,abc,
    	
    	
    	string s[3] = {"s1","s2","s3"};
    	ds.insert(--ds.end(),s,s+3);  //最后一个元素前面插入一个区间的数据
    	show(ds.begin() , ds.end() , ',');//hello,world,china,china,cplusplus,s1,s2,s3,abc,
    	
    	ds.pop_back(); //删掉末端
    	show(ds.begin() , ds.end() , ',');//hello,world,china,china,cplusplus,s1,s2,s3,
    	
    	//标准容器中的函数 删除指定位置
    	ds.erase(ds.begin());
    	show(ds.begin() , ds.end() , ',');//world,china,china,cplusplus,s1,s2,s3,
    	
    	/*调整大小*/
    	cout << "ds.size:" << ds.size() << endl; //8
    	
    	ds.resize(12); //零初始化 即空字符串
    	show(ds.begin() , ds.end() , ',');//hello,world,china,china,cplusplus,s1,s2,s3,,,,,
    	cout << "ds.size:" << ds.size() << endl; //12
    	
    	
    	ds.resize(15,"new");//增长大小,制定新增值
    	show(ds.begin() , ds.end() , ',');//hello,world,china,china,cplusplus,s1,s2,s3,,,,,new,new,new,
    	cout << "ds.size:" << ds.size() << endl; //15
    	
    	ds.resize(7);//减小大小后面的被删除
    	show(ds.begin() , ds.end() , ',');//hello,world,china,china,cplusplus,s1,s2,s3,
    	cout << "ds.size:" << ds.size() << endl; //7
    	
    	/*首尾数据*/
    	cout << "front:" << ds.front() << ",back:" << ds.back() << endl;
    	
    	/*修改数据*/
    
    	//1 单个赋值
    	ds.front() = "你好" ;
    	ds.back() = "中国";
    	show(ds.begin() , ds.end() , ',');//	你好,china,china,cplusplus,s1,s2,中国,
    
    	//2 团体赋值
    	ds.assign(5,"哈哈");
    	show(ds.begin() , ds.end() , ',');//哈哈,哈哈,哈哈,哈哈,哈哈,
    	
    	string s2[3] = {"数学","语文","英语"};
    	ds.assign(s2, s2+3);
    	show(ds.begin() , ds.end() , ',');//数学,语文,英语,
    	
    }

        show.h

    #ifndef SHOW_H
    #define SHOW_H
    
    template<typename T>
    void show(T beg,T end,char ch = ' ')
    {
    	while(beg != end)
    	{
    		cout << *beg++  << ch;
    	}
    	if(ch != '\n') cout << endl;
    }
    
    #endif

        

        

        

    文章结束给大家分享下程序员的一些笑话语录: Borland说我很有前途,Sun笑了;Sun说我很有钱,IBM笑了;IBM说我很专业,Sybase笑了;Sybase说我数据库很牛,Oracle笑了;Oracle说我是开放的,Linux笑了;Linux说我要打败Unix,微软笑了;微软说我的系统很稳定,我们都笑了。

  • 相关阅读:
    探索需求14
    周总结5
    周总结4
    探索需求13
    Java——迭代器
    Java——Collection集合
    Java——包装类
    Java——Arrays
    Java——BigInteger、BigDecimal
    Java——System
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3091465.html
Copyright © 2011-2022 走看看