复习笔记(九)——C++中的容器(STL容器)

STL定义

STL(Standard Template Library),即标准模板库,是一个高效的C++程序库。被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。包含了诸多在计算机科学领域里常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性

从逻辑层次来看,在STL中体现了泛型化程序设计的思想(generic programming)。在这种思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。

从实现层次看,整个STL是以一种类型参数化(type parameterized)的方式实现的基于模板(template)。

容器分为两大类:顺序容器、关联容器。

顺序容器

顺序容器有以下三种:vector(向量)、 deque(双队列)、list(列表)。

它们之所以被称为顺序容器,是因为元素在容器中的位置同元素的值无关,即容器不是排序的。将元素插入容器时,指定在什么位置(尾部、头部或中间某处)插入,元素就会位于什么位置。

顺序容器的接口:
①插入方法

push_front()push_back()insert(),运算符“=

②删除方法

pop()erase()clear()

③迭代访问方法

使用迭代器

④其他顺序容器访问方法(不修改访问方法)

front()back(),下标[]运算符

1、vector

向量属于顺序容器,用于容纳不定长线性序列(即线性群体),提供对序列的快速随机访问(也称直接访问)。

数据结构很像一个数组,所以与其他容器相比,vector 能非常方便和高效访问单个元素,支持随机访问迭代子。

向量是动态结构,它的大小不固定,可以在程序运行时增加或减少与数组不同,向量的内存用尽时,向量自动分配更大的连续内存区,将原先的元素复制到新的内存区,并释放旧的内存区。这是向量类的优点。

头文件:#include <vector>

基本操作:

(1)头文件
#include<vector>

(2)创建vector对象
vector<int> vec;

(3)尾部插入数字
vec.push_back(a);

(4)使用下标访问元素
cout<<vec[0]<<endl;记住下标是从0开始的。

(5)使用迭代器访问元素
 vector<int>::iterator it;
 for(it=vec.begin();it!=vec.end();it++)
   		cout<<*it<<endl;
   		
(6)插入元素
vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

(7)删除元素    
vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

(8)向量大小
vec.size();
vec.resize;改变大小

(9)清空
vec.clear();

示例(输出质数):

#include <iostream>
#include <iomanip>
#include <vector>	//包含向量容器头文件
using namespace std ;
int main(){
   
    vector<int>  A(10);	  //创建vector对象
    int n;
    int primecount = 0, i, j;
    cout<<"Enter a value>=2 as upper limit: ";
    cin >> n;
    A[primecount++] = 2;//下标法访问元素
    for(i = 3; i < n; i++){
   
        if (primecount == A.size())
            A.resize(primecount + 10); //改变容器大小

        if (i % 2 == 0)
            continue;
        j = 3;
        while (j <= i/2 && i % j != 0)
            j +=
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值