C++的STL从广义上讲分为algorithm(算法),container(容器)和iterator(迭代器)三类,包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。

  在C++标准库中,STL被组织成为下面的13个头文件:<algorithm>, <deque>, <functional>, <iterator>, <vector>, <list>, <map>, <memory>, <numeric>, <queue>, <set>, <stack>和 <utility>

1,vector向量容器

  vector是一种简单高效的容器,在尾端插入何删除元素,算法时间复杂度为O(1),其他元素插入和删除为O(n)。vector可动态调整所占用的内存空间。

用数组方式访问vector元素的参考代码如下图所示:

#include<iostream>
#include<cstdio>
#include<vector>
using namespace std; int main()
{
vector<int> v;
v.push_back(); //尾端插入新元素
v.push_back();
v.push_back(); for(int i = ; i < v.size(); i++)
cout<<v[i]<<' '; getchar(); return ;
}

运行结果

#include<iostream>
#include<cstdio>
#include<vector> using namespace std; int main()
{
int j; vector<int> v; v.push_back(); //尾端插入新元素
v.push_back();
//v.clear(); //全部清空元素
v.push_back();
v.insert(v.begin()+, ); //插入9在第二个后面
v.insert(v.begin(), ); //插入5为首元素
v.insert(v.end(), ); //插入12为末元素
v.erase(v.begin()+); //删除第二个元素
v.erase(v.begin(), v.begin()+); //删除前三个元素 vector<int>::iterator i; //迭代器相当于游标 for(i = v.begin(), j = ; i != v.end(); i++, j++)
cout<<"v["<<j<<"]="<<*i<<endl; swap(v[], v[]); for(i = v.begin(), j = ; i != v.end(); i++, j++)
cout<<"v["<<j<<"]="<<*i<<endl; cout<<v.empty()<<endl; //判断是否为空
cout<<v.size()<<endl; //元素实际个数
cout<<v.max_size()<<endl; //可容纳的最大元素个数
cout<<v.capacity()<<endl; //当前可容纳的vector元素个数
cout<<v.front()<<endl; //首元素引用
cout<<v.back()<<endl; //末尾元素引用
v.pop_back(); //删除末尾元素 v.reserve(); //调整数据空间大小
cout<<v.capacity()<<endl; vector<int>::reverse_iterator ri; //反响迭代器
for(ri = v.rbegin(); ri != v.rend(); ri++) //首尾反向
cout<<*ri<<" "; getchar(); return ;
}

运行结果

结构体容器参考代码如下

#include<iostream>
#include<cstdio>
#include<vector> using namespace std; struct stu
{
int x;
int y;
}; int main()
{
int j;
vector<stu> v1; //结构体容器
vector<stu> v2; struct stu a = {, };
struct stu b = {, };
struct stu c = {, }; v1.push_back(a);
v1.push_back(b);
v1.push_back(c);
v2.push_back(c);
v2.push_back(b);
v2.push_back(a); cout<<"v1:\n"; for( int i = ; i < v1.size(); i++)
cout<<v1[i].x<<" "<<v1[i].y<<endl; cout<<"v2:\n"; for(int i = ; i < v2.size(); i++)
cout<<v2[i].x<<" "<<v2[i].y<<endl; swap(v1, v2); cout<<"v1:\n"; for(int i = ; i <v1.size(); i++)
cout<<v1[i].x<<" "<<v1[i].y<<endl; cout<<"v2:\n"; for(int i = ; i < v2.size(); i++)
cout<<v2[i].x<<" "<<v2[i].y<<endl; getchar(); return ;
}

运行结果:

标准模板库使用参考——vector向量容器的更多相关文章

  1. C++标准模板库(STL)和容器

    1.什么是标准模板库(STL)? (1)C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板 ...

  2. C++标准模板库STL算法与自适应容器(栈和队列)

    参考<21天学通C++>第23与第24章节,对STL算法与自适应容器进行介绍. 实际上在前面的STL顺序容器.关联容器进行介绍时或多或少引用到了一些STL算法中的模板函数.而自适应容器是在 ...

  3. 7.4 C++标准模板库(STL)的概念

    参考:http://www.weixueyuan.net/view/6401.html 总结:  标准模板库为C++提供了完善的数据结构及算法. 标准模板库包括三部分:容器.算法和迭代器. 容器是对象 ...

  4. C++-标准模板库

    C++较之C语言强大的功能之一是,C++编译器自带了大量的可复用代码库,我们称为标准模板库(standard template library),STL.标准模板库是一套常用的数据结构的集合,包括链表 ...

  5. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  6. STL(标准模板库)理论基础,容器,迭代器,算法

    基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间.   ...

  7. C++标准模板库(STL)之Vector

    在C中,有很多东西需要自己实现.C++提供了标准模板库(Standard Template Libray,STL),其中封装了很多容器,不需要费力去实现它们的细节而直接调用函数来实现功能. 具体容器链 ...

  8. C++ 标准模板库(STL)——容器(Containers)的用法及理解

    C++ 标准模板库(STL)中定义了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量(vector).队列(queue).栈(stack).set.map等.这次主要 ...

  9. 8、泛型程序设计与c++标准模板库2、c++标准模板库中的容器

    顺序容器类以逻辑线性排列方式存储元素,在这些容器类型中的元素在逻辑上被认为是连续的存储空间中存储的.顺序容器可用于存储线性群体. 在关联容器类中,元素的存储和检索基于关键字和元素与其他元素之间的关系, ...

随机推荐

  1. linux 输入子系统之电阻式触摸屏驱动

    一.输入子系统情景回忆ING...... 在Linux中,输入子系统是由输入子系统设备驱动层.输入子系统核心层(Input Core)和输入子系统事件处理层(Event Handler)组成.其中设备 ...

  2. Playbooks 中的错误处理

    Topics Playbooks 中的错误处理 忽略错误的命令 控制对失败的定义 覆写更改结果 Ansible 通常默认会确保检测模块和命令的返回码并且会快速失败 – 专注于一个错误除非你另作打算. ...

  3. [原创]Spring JdbcTemplate 使用总结与经验分享

    引言 近期开发的几个项目,均是基于Spring boot框架的web后端项目,使用JdbcTemplate执行数据库操作,实际开发过程中,掌握了一些有效的开发经验,踩过一些坑,在此做个记录及总结,与各 ...

  4. linux下的定时或计时操作(gettimeofday等的用法,秒,微妙,纳秒(转载)

    一.用select()函数实现非阻塞时的等待时间,用到结构体struct timeval {},这里就不多说了. 二.用gettimeofday()可获得微妙级(0.000001秒)的系统时间,调用两 ...

  5. Django的admin使用

    现在假设我们自己定义了一个用户模型和成员模型,我们需要在Django后台对它进行管理,使用admin可以对模型进行相关的展示设置和管理. from django.contrib import admi ...

  6. 【289】◀▶ Python I/O & 读写文本文件

    参考:Python 文件 I/O 参考:Python OS 文件/目录方法 目录: 01   open 函数 用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写. 02   F ...

  7. java中的报错机制

    异常:Exception,程序运行过程中因为一些原因,使得程序无法运行下去 注意:在程序能够运行起来的情况,不是程序编译通不过 举例:读文件,点击一个按钮,文件不存在:访问数据库服务器,数据库服务器停 ...

  8. 【285】ArcPy 暗色窗体设置

    预览图 设置如下 Default:

  9. EKF model&realization

    REF: https://pythonrobotics.readthedocs.io/en/latest/modules/localization.html#unscented-kalman-filt ...

  10. mysql 纸 mysql_fetch_array OR mysql_fetch_assoc OR mysql_fetch_row

    <?php $con = mysql_connect("localhost", "root", "123456");if (!$con ...