C++ 容器 与 迭代器 笔记

南笙酒味 提交于 2020-02-08 14:36:07

一,什么是容器?
数组,stack,queue,可以容纳一类资源称之为容器。
向量容器:
数组这种数据结构最大的先天不足就是他受限于一个固定的长度。
在程序中,数组的空间是固定的,不可以多,容易溢出或者出现溢出这种现象。
C++标准库提供的向量(vector)类型解决了先天不足的问题。
就像可以创建各种不同类型的数组一样,我们也可以创建各种不同类型的向量。
std::vector vectorName;
优点:

  • 随着往容器添加元素而无限增大
  • 用size()方法可查出当前长度
  • 可以通过push_back()往其中添加东西
  • 可以通过访问数组元素的语法来访问给定向量的各个元素

实例:

#include <iostream>
#include <string>
#include <vector>

int main()
{
    std::vector<std::string> names;

    names.push_back("Q");
    names.push_back("W");
    names.push_back("E");
    names.push_back("R");

    for(int i=0;i<names.size();i++)
    {
        std::cout<< "name["<<i<<"] = "<<names[i]<<"\n";
    }
    return 0;
}

运行结果:

name[0] = Q
name[1] = W
name[2] = E
name[3] = R

迭代器来源?
对容器个元素进行遍历是一种非常常见的任务,所以应该有一种标准的方式来做这件事,所以C++标准库提供的**迭代器(iterator)**就是为了解决上述问题得来。
基本操作:*,++,–, = 等

#include <iostream>
#include <string>
#include <vector>

int main()
{
    std::vector<std::string> names;

    names.push_back("Q");
    names.push_back("W");
    names.push_back("E");
    names.push_back("R");

    //用迭代器输出向量
    std::vector<std::string>::iterator iter = names.begin();

    while(iter != names.end()) //iter迭代器是特殊的指针
   {
       std::cout << *iter <<"\n";
       iter++;
   }
    return 0;
}

运行结果:

Q
W
E
R
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!