STL基础1:vector】的更多相关文章

vector 构造函数: //default: vector<T> v; //空的vector //fill: vector<T> v(n); //n个元素的vector,元素默认初始化 vector<T> v(n, value); //n个元素值为value的vector //range: vector<T> v(first, last); //两个迭代器之间的元素构成的vector vector<T> v(arr, arr + sizeof(…
用STL中的vector动态开辟二维数组 源代码:#include <iostream>#include <vector>using namespace std;int main(){ int m, //行数     n; //列数 cout << "input value for m,n:"; cin>>m>>n;  //注意下面这一行:vector<int后两个">"之间要有空格!否则会被认…
stl容器:vector,deque,list,map/multimap,set 特殊容器:stack,queue,priority_queue 通用操作 size()  返回当前容器元素数量 empty() 判断容器是否为空 max_size() 返回容器能容纳的最大元素数量 与迭代器有关的操作 begin() 返回一个迭代器,指向第一个元素 end() 指向最后一个元素之后 rbegin() 指向逆向遍历的第一个元素 rend() 指向逆向遍历的最后一个元素之后 元素操作 insert(po…
为什么要使用C++标准库 /* * 为什么使用C++标准库: * 1. 代码重用,不用重新造轮子 * 2. 效率(快速,且使用更少的资源). 现代C++编译器经常对C++标准库的代码有优化 * 3. 准确,更少的bug * 4. 简洁,可读性好:减少控制流 * 5. 标准化,保证可用 * 6. 是编写库的一个很好的榜样 * 7. 对数据结构和算法有更好的认识 */ /* * STL: Standard Template Library * -- 容器和算法,迭代器是容器和算法之间的桥梁,使容器和…
前言 STL中的vector有几种初始化方式,根据不同的需求选择合适的初始化方式. 源码 // constructing vectors #include <iostream> #include <vector> int main () { // constructors used in the same order as described above: std::vector<int> first; // empty vector of ints std::vect…
STL中的Vector相关用法 标准库vector类型使用需要的头文件:#include <vector>. vector 是一个类模板,不是一种数据类型,vector<int>是一种数据类型. Vector的存储空间是连续的,list不是连续存储的. 1. 定义和初始化 vector< typeName > v1; //默认v1为空,故下面的赋值是错误的v1[0]=5;//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被…
C++ STL中的vector的内存分配与释放http://www.cnblogs.com/biyeymyhjob/archive/2012/09/12/2674004.html 1.vector的内存增长 vector其中一个特点:内存空间只会增长,不会减小,援引C++ Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储.设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间.拷贝元素.撤销旧空间,这样性能…
[原创] 使用C++STL中的vector, #include <stdio.h> #include<stdlib.h> #include<vector> using namespace std; int main() { vector<int> v; v.push_back(); v.push_back(); v.push_back(); v.push_back(); v.push_back(); ; i<v.size(); i++) { print…
/* STL中的vector实现邻接表 2014-4-2 08:28:45 */ #include <iostream> #include <vector> #include <cstdlib> #define MAX 10000 using namespace std; struct EdgeNode{ //边表节点类型 int to, w; //顶点序号和边长 }; vector<EdgeNode> map[MAX]; int main(){ EdgeN…
2.1实现简单基础的vector 1.设计API 我们参考下C++ <std> 库中的vector, vector中的api很多,所以我们把里面用的频率很高的函数实现; 1.1 new&delete new:     应该可以初始化一个我们需要的结构体指针并申请一段内存; delete:              不仅能够把new出来的内存完整\安全的销毁,而且可以把元素中可能出现的内存指针中申请的内存销魂; 1.2 常用的api append:     在数组的最末尾添加一个元素;…
每次忘记都去查,真难啊 /* C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 */ /* vector常用用法 */ //头文件 #include<vector> //常用的初始化方法 vector<int> v; //直接定义一个整型元素的向量 且未声明长度,其中int的位置可以换成别的数据类型或者结构体等 vector<); //定义了10个整型元素的向量,其中每一个数都没有初值 vector<, )…
#include <iostream> #include <vector> #include <numeric> #include <algorithm> #include <string> using namespace std; #define N_K 100 struct Data_s{ int number; ]; bool operator < (const Data_s &obj) const { return numb…
#include <iostream> #include <vector> #include <algorithm> #include <numeric> using namespace std; bool findCondition(int x) { return x%2==0; } //仿函数 template<typename T> struct display{ void operator()(const T &x)const {…
知识点学习 Vector容器 vector是C++标准程序库中的一个类,其定义于头文件中,与其他STL组件一样,ventor属于STD名称空间: ventor是C++标准程序库里最基本的容器,设计之初是为了改善C语言原生数组的种种缺失和不便,而欲提供一种更有效,安全的数组: 根据使用功能大概分为几个部分 访问元素的方法 ven[i] 访问索引值为i的引用 ven.back() 返回ventor最尾元素的引用 新增或移动元素的方法 vec.push_back() 新增元素至ventor的尾端,必要…
一.什么是标准模板库(STL)? 1.C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板,我们可以调用这些模板来定义一个具体的类:与之前的自己手动创建一个函数模版或者是类模板不一样,我们使用了 STL就不用自己来创建模板了,这些模板都定义在标准模板库中,我们只需要学会怎么使用这些类模板来定义一个具体的类, 然后能够使用类提供的各种方法来处理数据. 2.STL六大组件:容器(contain…
目录 一 STL基本概念 二 string容器 三 vector容器 3.1 vector动态增长原理 3.2 vector构造函数 3.3 vector常用赋值操作 3.4 vector大小操作 3.5 vector数据存取操作和插入删除 3.6 使用swap()收缩空间 3.7 使用reserve()预留空间提高程序效率 注:原创不易,转载请务必注明原作者和出处,感谢支持! 注:内容来自某培训课程,不一定完全正确! 一 STL基本概念 STL(Standard Template Librar…
std::vector 源码分析 从源码视角观察 STL 设计,代码实现为 libstdc++(GCC 4.8.5). 由于只关注 vector 的实现,并且 vector 实现几乎全部在头文件中,可以用一个这样的方法里获取比较清爽的源码 // main.cpp #include <vector> int main() { std::vector<int> v; v.emplace_back(1); } g++ -E main.cpp -std=c++11 > vector.…
http://www.169it.com/article/3215620760.html http://www.cnblogs.com/sharpfeng/archive/2012/09/18/2691096.html 在C++的STL库中,要实现排序可以 通过将所有元素保存到vector中,然后通过sort算法来排序,也可以通过multimap实现在插入元素的时候进行排序.在通过 vector+sort进行排序时,所有元素需要先存入vector容器中,sort在排序时又需要将元素全部取出来再进…
step1: #include <iostream> #include <vector> #include <string> using namespace std; main() { vector<string> SS; SS.push_back("The number is 10"); SS.push_back("The number is 20"); SS.push_back("The number i…
deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插入比vecto稍慢. );返回的是一个迭代器.删除使用erase(位置):或者erase(重哪里a,到哪里b);其中a位置包括,而b位置是不包括的,位置一般都是用的迭代器.list反转和排序:lis.reverse(), lis.sort().可以使用distance(a, b);计算a到b的距离.…
stl提供了三个最基本的容器:vector,list,deque.         vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此     它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间     进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新     申请一块足够大的内存并进行内存的拷贝.这些都大大影响了vector的效率.         list就是数据结构中的双向链表(根据sgi   s…
STL中vector是通常作为数组使用,不过它更像一个动态数组,在实际项目开发中大量使用. 优点:存储空间连续,可以使用下标访问,时间复杂度O(1). 缺点:不适合从中间删除和添加元素. C++标准规定的vector模板声明: template < class T, class Allocator = allocator<T> > class vector; T : 存储的数据类型 Allocator : 存储空间分配器(默认为std::allocator<T>) 1)…
STL跨平台调用会出现很多异常,你可以试试. STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下面是详细解释. 原因分析:一 句话-----如果任何STL类使用了静态变量(无论是直接还是间接使用),那么就不要再写出跨执行单元访问它的代码. 除非你能够确定两个动态库使用的 都是同样的STL实现,比如都使用VC同一版本的STL,编译选项也一样.强烈建议,不要在动态库接口中传递STL容器!! STL…
本文由 Justme0翻译自 Code Project 转载请参见文章末尾处的要求. 介绍 众所周知,要建一棵树,我们需要关注它的内存分配与释放.为了避开这个问题,我打算用C++ STL(vector和deque)来建一棵小型的BST.很明显,这篇文章是出于这个想法的. 背景 BST是应用最广泛的数据结构之一.C是首选语言,不过因为C++尤其是C++11的出现,我更有兴趣用C++来实现.但是这篇文章里没有涉及到C++11,代码可用C++98来编译. 使用代码 要建BST,我们需要BST的数据结构…
一,STL的组成 1.什么是STL STL(Standard Template Library)标准模板库的简称,是由惠普开发的一系列软件的总称,STL现在是C++的一部分,已经被构建于编译系统之内,所以不需要再引入. 2.STL的组成部分 容器(containers):是一种数据结构容器,使用类模板的方式提供,我们可以方便的进行数据的存储操作. 适配器(adapters):以序列式容器为基础,提供的栈,队列和优先级队列的这种容器. 迭代器(iterators):类似于指针,用来操作容器的对象.…
在C中,有很多东西需要自己实现.C++提供了标准模板库(Standard Template Libray,STL),其中封装了很多容器,不需要费力去实现它们的细节而直接调用函数来实现功能. 具体容器链接:set,string,map,queue,priority_queue,stack,pair 1.vector的用法 vector:向量,这里叫“变长数组”,长度根据需要而自动改变的数组.有时会碰到普通数组会超过内存的情况,可以使用vector解决.而且,vector可以用来以邻接表的方式存储图…
[1]模板类vector 模板类vector可理解为广义数组.广义数组,即与类型无关的数组,具有与数组相同的所有操作. 那么,你或许要问:既然C++语言本身已提供了一个序列式容器array,为什么还要vector呢? 我们一直强调,事物总是朝向更先进的方向螺旋式发展与进化.这个问题其中的道理也不例外. vector的数据安排及操作方式与array非常相似.两者唯一区别在于空间运用的灵活性. array是静态空间,一旦配置不能改变.要想换个大(或小)点的房子,一切琐细得由客户端自己料理(步骤如下)…
STL排序算法 排序算法要求随机访问迭代器 vector, deque, container array, native array 例子 vector<int> vec = {9,1,10,2,45,3,90,4,9,5,8}; sort(vec.begin(), vec.end()); // 默认以 < 排序 // vec: 1 2 3 4 5 8 9 9 10 45 90 bool lsb_less(int x, int y) { return (x%10)<(y%10);…
1 首先看个仿函数的例子 class X { public: void operator()(string str) { // 函数调用运算符,返回类型在operator之前 cout << "Calling functor X with parameter " << str<< endl; } operator string () const { return "X"; } //类型转换函数,返回类型在operator之后 };…
1 迭代器 Iterators 5种迭代器类型 随机访问迭代器: vector, deque, array // 允许的操作 vector<int> itr; itr = itr + 5; // itr往前移5步 itr = itr - 4; if (itr2 > itr1) ... ++itr; // 前置的比后置的快 --itr; 双向迭代器: list, set/multiset, map/multimap // 允许的操作 list<int> itr; ++itr;…