`

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;

}

元素的删除

......待续

分享到:
评论

相关推荐

    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章 ...

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

    主要为大家详细介绍了C++ STL入门教程第一篇,vector向量容器使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    C++ STL 开发技术导引(随书源码)

    【内容简介】 ...第10章 bit_vector位向量容器 第11章 set集合容器 第12章 multiset多重集合容器 第13章 map映照容器 第14章 multimap多重映照容器 第15章 hash_set哈希集合容器 第16章 hash_map哈希映照容器

    circular_vector:用 C++ 编写的符合 STL 的循环向量(容器)数据结构

    ##CIRCULAR_VECTOR## 用 C++ 编写的符合 STL 的圆形向量(容器)数据结构与循环缓冲区数据结构有相似之处,除了允许访问容器中的所有元素。 包含与来自 STL 的 C++98 std::vector 相同的所有成员函数,但 vector::...

    关于STL中vector容器的一些总结

    vector作为STL提供的标准容器之一,是经常要使用的,有很重要的地位,并且使用起来也是灰常方便。vector又被称为向量,vector可以形象的描述为长度可以动态改变的数组,功能和数组较为相似

    STL标准模板库简介

    2.1 C++ VECTOR(向量容器) 2.2 C++ LIST(双向链表) 2.3 C++ DEQUE(双向队列) 2.4 三者比较 3 关联容器 3.1 特点 3.2 C++ SETS & MULTISETS 3.3 C++ MAPS & MULTIMAPS 4 容器适配器 4.1 特点 4.2 C++ ...

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

    第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章 ...

    TinySTL:参考侯捷的STL原始码解析,实现的基础的STL容器-源码解析

    向量 使用SimpleAllocate.h进行空间配置,重新设置容量设置为元素个数的串联,如果容量不足,重新分配,可以重新使用。 提供size() , empty() , push_back() , pop_back()等接口并提供迭代器访问 放 尽快使用BST...

    stl数据结构.docx

    常用的数据结构有array(数组)、vector(向量)、list(列表)、tree(树)、stack(栈)、queue(队列)、hash table(散列表)、set(集合)、map(映射表)等等。这些数据结构按结构可以分为序列式(sequence)...

    c++ vector(向量)使用方法详解(顺序访问vector的多种方式)

    vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件: 代码如下:#include&lt;vector&gt;; 一、vector 的初始化:可以有五种方式,举例...

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

    第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详解 包括各种实例代码

    六、vector向量 13 成员函数: 13 实例程序: 14 七、map / multimap 映射与多重映射 15 map成员函数: 15 Map实例程序: 17 MultiMap实例程序: 18 八、set / multiset 集合与多重集合 19 成员函数: 19 Set实例...

    cpp-soa-iterator:使用 c++ struct-of-array 迭代器进行实验

    C++ STL 中的vector容器和thrust device_vector容器可以很容易地用于实现结构数组数据模式。 例如,考虑一个二维点向量。 这可以用结构来实现: struct Point { double x; double y;}; 和 STL vector : std::...

    LeetCode判断字符串是否循环-leetcode:用lin编码

    同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。 在使用它时, 需要包含头文件 vector, #include&lt;vector&gt; vector 容器与数组相比其优点在于它能够根据...

    taetl:嵌入式模板库

    所有算法均相同,配对和好友可用,还实现了集合,地图和向量等容器。 但是,在这里,第一个明显的区别已经暴露出来。 所有容器仅与堆栈上的内存一起使用。 这意味着必须在编译时知道它们的大小。 此外,我假设环境...

    leetcode添加元素使和等于-step_LeetCode:算法与数据结构(含经典LeetCode题目)

    vector向量 vector实质上是数组。 #include &lt;vector&gt; #include #include using namespace std; int main() { vector test; test.push_back(7); //尾部加入元素 reverse(test.begin(), test.end()); //反转vec

    程序员面试刷题的书哪个好-CPP_Learning:记录下C++语言学习

    标准模版库,vector是动态数组/向量,list是双向链表。都是顺序容器。 C++多态,虚函数机制 基础:继承关系,有虚函数,父类指针指向子类。虚函数表 进程通信 进程线程差异 进程是最小的资源分配单位,线程是最小的...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    全书围绕c++语言的结构来组织,开始章节介绍编程的普通概念,接下来详细介绍C++hh的继承、多态、异常处理以及标准模板库(STL),同时还包含模式和uML的介绍。本书内容系统、全面,给出了大量代码示例、自测练习、编程...

Global site tag (gtag.js) - Google Analytics