`
isiqi
  • 浏览: 16563897 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

STL---之vector向量容器

阅读更多

vector向量容器

作为数组的一个泛化推广的vector容器,不仅可以数组一样的元素随机访问,还可以在容器的尾端插入新元素

vector是一个简单,高效的容器,在尾端插入和删除元素,算法时间复杂度为O(1)常数阶,其他元素的插入和删除为O(n)的线性阶,其中n为容器的元素个数,vector具有自动的内存管理功能,对于元素的插入和删除,可动态的调整所占用的内存空间。

vector技术原理

vector容器是一个线性结构,用3个指针存放向量的起始字节位置,当前最后一个向量元素的末尾字节和整个容器所占用的内存空间的末尾字节,3个指针变量分别为m_start,m_finish和m_end_of_storage

vector应用基础

创建vector对象

1 vector<int> v;

2 vector<double> v(10); //创建一个具有10个元素的vector对象,每个元素默认值为0.0

3 vector<double> v(10,9.3); //创建一个具有10个元素的vector对象,每个元素默认值为9.3

4 vector<char> v1(5,'k');

vector<char> v2(v1);

初始化赋值

vector提供push_back函数,常用来进行vector容器的初始化,push_back函数在容器的尾端插入新元素

元素的遍历访问

vector的元素可采用数组或者迭代器的访问进行遍历访问

#include<vector>

#include<iostream>

int main()

{

using namespace std;

vector<int> v;

v.push_back(20);

v.push_back(26);

v.push_back(39);

for(int i=0;i<v.size();i++)

{

cout<<"v[" <<i <<"]=" <<v[i] <<endl;

}

return 0;

}

#include<vector>

#include<iostream>

int main()

{

using namespace std;

vector<int> v;

v.push_back(20);

v.push_back(26);

v.push_back(39);

vector<int>::iterator i,iend;

iend = v.end();

int j;

for(i = v.begin(),j = 0;i != iend;i++,j++)

{

cout<<"v[" <<j <<"]=" <<*i <<endl;

}

return 0;

}

vector提供了begin()和end()函数用于获取首元素的迭代器和最后一个元素的下一位置的迭代器

元素的插入

同于在vector容器尾部添加元素的push_back函数,insert函数可在函数的任意位置插入元素,由于插入时先将插入位置后的元素移位,以空出一个位置进行插入,因此,insert函数的执行较push_back函数稍为耗时

#include<vector>

#include<iostream>

int main

{

using namespace std;

vector<int> v;

v.push_back(6);

v.push_back(7);

v.push_back(8);

v.push_back(10);

v.insert(v.begin()+3,9); //在元素10的前面插入9

v.insert(v.begin(),5); //插入5为首元素

v.insert(v.end(),11); //插入11为末元素

for(int i = 0;i < v.size();i++)

{

cout<<"v[" << i <<"]=" <<v[i] <<endl;

}

return 0;

}

元素的删除

......待续

分享到:
评论

相关推荐

    STL-WInCE 标准模板库EVC

    STL-WinCE是针对Windows CE平台定制的STL版本,它允许开发者在WinCE系统中使用如向量(vector)、列表(list)、映射(map)、集合(set)、迭代器(iterator)等数据结构,以及各种排序、搜索和操作算法。...

    c++语言STL - 概要及容器部分讲解(大连理工资深教授)

    容器是STL的核心组件之一,主要分为两大类:顺序容器和关联容器。 1. **顺序容器**:按照元素插入顺序存储数据。主要包括以下几种: - **向量(Vector)**:动态数组,支持快速随机访问。 - **双端队列(Deque)**:...

    STL-CHM参考手册

    2. **向量(Vector)**:动态数组,支持在任意位置插入和删除元素,自动调整大小。 3. **列表(List)**:双向链表,支持快速插入和删除,但随机访问较慢。 4. **双向队列(Deque)**:双端数组,允许在两端进行插入...

    ros-melodic-eigen-stl-containers:ros-melodic-eigen-stl-containersAUR软件包

    STL(Standard Template Library)是C++标准库的一部分,包含各种容器(如vector、list、map等)、迭代器、算法等,用于高效的数据管理。 这个AUR(Arch User Repository)软件包是为了在Arch Linux及其衍生系统上...

    三十分钟掌握STL-教程 - 用于合并.docx

    容器是存储和管理元素的类模板,如数组、向量(`vector`)、列表(`list`)等。在这个教程中,我们看到了向量的使用: ```cpp vector&lt;int&gt; intVector; ``` 向量是一种动态数组,可以在其末尾方便地添加和删除元素...

    STL-基础数据类型的基本用法

    - **向量(Vector)**:`std::vector&lt;T&gt;` 类似于动态数组,可以自由地添加和删除元素,其内部会自动调整大小。 - **列表(List)**:`std::list&lt;T&gt;` 使用双向链表实现,支持快速的插入和删除,但随机访问效率较低...

    c++/STL容器设计相关

    STL提供了多种不同类型的容器,如向量(vector)、列表(list)、映射(map)、集合(set)、队列(queue)、堆(heap)等,每种都有其特定的特性和适用场景。这些容器都是模板类,因此可以容纳任何类型的元素,只要...

    STL 向量的使用方法—代码

    其中,`vector`是STL中最基础且常用的容器之一,它是一个动态数组,可以方便地进行元素的添加、删除和访问。下面将详细介绍STL向量`vector`的使用方法,并通过代码示例加以说明。 1. **初始化与声明** `vector`的...

    C++ STL开发技术导引(第5章)

    第6章 vector向量容器 92 6.1 vector技术原理 92 6.2 vector应用基础 94 6.3 本章小结 101 第7章 deque双端队列容器 102 7.1 deque技术原理 102 7.2 deque应用基础 108 7.3 本章小结 115 第8章 ...

    STL-.rar_C 知识点

    STL的容器包括数组(`std::array`)、向量(`std::vector`)、列表(`std::list`)、链表(`std::forward_list`和`std::list`)、集合(`std::set`和`std::multiset`)、映射(`std::map`和`std::multimap`)等。...

    向量 stl 数据结构

    其中,向量(vector)是STL中非常重要的一个数据结构,它类似于动态数组,能够方便地进行增删改查操作。本章将详细讲解向量的基本概念、抽象数据类型、迭代器、实现方法以及一些实际应用。 2.1 向量的基本概念 向量...

    POJ3009-Curling 2.0【DFS+Vector+回溯+剪枝】

    2. **向量(Vector)**:在C++中,`std::vector`是STL(标准模板库)中的一个重要容器,可以动态存储数组。在解题中,向量常常被用来存储和操作数据,如表示游戏的状态、保存路径信息等。其优点包括快速访问、动态...

    stl-examples:使用STL容器和算法

    1. **向量(vector)**:动态数组,可以随时在末尾插入或删除元素,访问速度较快。 2. **列表(list)**:双向链表,允许在任意位置快速插入和删除元素,但随机访问效率较低。 3. **双向链表(deque)**:双端队列,...

    STL 定义的具体容器类

    ### STL 定义的具体容器类 #### 一、概述 STL(Standard Template Library,标准模板库)是C++标准库的重要组成部分,提供了一系列高效的数据结构和算法。STL定义了三种基本容器类型:顺序性容器、关联式容器以及...

    STL_中的常用的Vector_Map_Set_Sort用法

    ### C++ STL 中 Vector, Map, Set 和 Sort 的用法详解 #### 一、Vector (向量) **1. 声明** - `vector&lt;int&gt; a;` —— 声明一个元素类型为 `int` 的 `vector` 对象 `a`,初始时不含任何元素。 - `vector&lt;MyType&gt; a...

    STL_Depue_Vector_Compare

    标题“STL_Depue_Vector_Compare”提示我们讨论的话题与STL(标准模板库)中的一个容器——`std::vector`有关,可能涉及到比较或性能分析。Depue可能是一个人名,代表了这个主题的来源或者是一种特定的比较方式。在...

    STL vector:在Matlab中对STL vector容器的模仿。-matlab开发

    在本场景中,我们关注的是STL中的`vector`容器,这是一个动态数组,允许在任意位置插入和删除元素,并且其大小可以自动调整。而在MATLAB中,虽然没有直接对应的STL容器,但可以通过一些技巧来模仿STL`vector`的功能...

    STL实践指南-pdf

    - **向量**(Vector):类似于动态数组,可以动态调整大小。 - **列表**(List):双向链表实现。 - **集合**(Set):不重复的有序元素集合。 - **映射**(Map):键值对的集合。 - **迭代器**(Iterator):...

    C++ STL入门教程(1) vector向量容器使用方法

    C++ STL入门教程(1)vector向量容器使用方法 C++ STL(Standard Template Library)是C++标准库中的一个组件,提供了一些常用的数据结构和算法。其中,vector是一种常用的容器类,相当于动态数组,可以自动扩展和...

    向量的基本用法vector

    在C++中,`vector`是一种动态数组,它属于标准模板库(STL)的一部分。与固定大小的数组不同,`vector`可以在运行时动态地调整其大小。`vector`支持随机访问,并提供了类似于数组的操作接口,但同时又具有更加丰富的...

Global site tag (gtag.js) - Google Analytics