STL---vector

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 typedef vector<int> INTVECTOR;//自定义类型INTVECTOR
 5 //测试vector容器的功能
 6 int main()
 7 {
 8 //vec1对象初始为空
 9 INTVECTOR vec1;
10 //vec2对象最初有10个值为6的元素
11 INTVECTOR vec2(10,6);
12 //vec3对象最初有3个值为6的元素,拷贝构造
13 INTVECTOR vec3(vec2.begin(),vec2.begin()+3);
14 //声明一个名为i的双向迭代器
15 INTVECTOR::iterator i;
16 //从前向后显示vec1中的数据
17 cout<<"vec1.begin()--vec1.end():"<<endl;
18 for (i =vec1.begin(); i !=vec1.end(); ++i)
19 cout << *i << " ";
20 cout << endl;
21 //从前向后显示vec2中的数据
22 cout<<"vec2.begin()--vec2.end():"<<endl;
23 for (i =vec2.begin(); i !=vec2.end(); ++i)
24 cout << *i << " ";
25 cout << endl;
26 cout<<"vec2.begin()--vec2.end():"<<endl;
27
28 //从前向后显示vec3中的数据
29 cout<<"vec3.begin()--vec3.end():"<<endl;
30 for (i =vec3.begin(); i !=vec3.end(); ++i)
31 cout << *i << " ";
32 cout << endl;
33 //测试添加和插入成员函数,vector不支持从前插入
34 vec1.push_back(2);//从后面添加一个成员
35 vec1.push_back(4);
36 vec1.insert(vec1.begin()+1,5);//在vec1第一个的位置上插入成员5
37 //从vec1第一的位置开始插入vec3的所有成员
38 vec1.insert(vec1.begin()+1,vec3.begin(),vec3.end());
39 cout<<"after push() and insert() now the vec1 is:" <<endl;
40 for (i =vec1.begin(); i !=vec1.end(); ++i)
41 cout << *i << " ";
42 cout << endl;
43 cout<<"reverse vec1:"<<endl;
44 INTVECTOR::reverse_iterator it;
45 for (it=vec1.rbegin(); it!=vec1.rend(); ++it)
46 cout << *it << " ";
47 cout << endl;
48 //测试赋值成员函数
49 vec2.assign(8,1); // 重新给vec2赋值,8个成员的初始值都为1
50 cout<<"vec2.assign(8,1):" <<endl;
51 for (i =vec2.begin(); i !=vec2.end(); ++i)
52 cout << *i << " ";
53 cout << endl;
54 //测试引用类函数
55 cout<<"vec1.front()="<<vec1.front()<<endl;//vec1第零个成员
56 cout<<"vec1.back()="<<vec1.back()<<endl;//vec1的最后一个成员
57 cout<<"vec1.at(4)="<<vec1.at(4)<<endl; //vec1的第五个数,即数组下标为4的元素
58 cout<<"vec1[4]="<<vec1[4]<<endl;//同上。59 //测试移出和删除
60 vec1.pop_back();//将最后一个成员移出vec1
61 vec1.erase(vec1.begin()+1,vec1.end()-2);//删除成员
62 cout<<"vec1.pop_back() and vec1.erase():" <<endl;
63 for (i =vec1.begin(); i !=vec1.end(); ++i)
64 cout << *i << " ";
65 cout << endl;
66 //显示序列的状态信息
67 cout<<"vec1.size(): "<<vec1.size()<<endl;//打印成员个数
68 cout<<"vec1.empty(): "<<vec1.empty()<<endl;
69 vec1.clear();
70 cout<<vec1.empty();
71 cout<<vec1.size();
72 }

 

时间: 2024-09-20 00:38:13

STL---vector的相关文章

vevtor-关于STL vector的遍历问题,请问怎样一边操作一边遍历删除?

问题描述 关于STL vector的遍历问题,请问怎样一边操作一边遍历删除? #include #include #include #include #include using namespace std; typedef struct rect { int id; int length; int width; }Rect; vector vec; void * add(void *argc) { int i; Rect r; while(1){ sleep(1); for(i=0;i<10;

深入浅析STL vector用法_C 语言

本文关于stl vector用法的介绍非常详细,具体内容请看下文 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了. Vector总览 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之

STL——vector

vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组.像数组一样,vector类也用从0开始的下标表示元素的位置:但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化.     vector类常用的函数如下所示:     1.构造函数 vector():创建一个空vector vector(int nSize):创建一个vector,元素个数为nSize vector(int nSize,const t& t):创建一个

STL - vector algorithm

// create vector with elements from 1 to 6 in arbitrary order vector<int> coll = { 2, 5, 4, 1, 6, 3 }; // find and print minimum and maximum elements auto minpos = min_element(coll.cbegin(), coll.cend()); cout << "min: " << *mi

C++ STL中用vector 改进内存的再分配

本文描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整 该缓存的大小,以便能容纳更多的数据.本文将讨论如何使用 STL 的 vector 进行内存的再 分配. 这里描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在 运行时调整该缓存的大小,以便能容纳更多的数据.传统的内存再分配技术非常繁琐,而且 容易出错:在 C 语言中,一般都是每次在需要扩充缓存的时候调用 realloc().在 C++ 中 情况更糟,你甚至无法在函数中为 new 操作分配的数组重新申请内

详细解说 STL 排序(Sort)

排序 一切复杂的排序操作,都可以通过STL方便实现 ! 0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思去考虑其算法原理,也不用再去验证其准确性.不过,等你开始应用计算机语言来工作的时候,你会发现,面对不同的需求你需要一次又一次去用代码重复实现这些已经成熟的算法,而且会一次又一次陷入一些由于自己疏忽而产生的b

结合泛型与模板的STL.NET探索

模板 开始之前,先来看一个笑话,当问一个C++程序员怎样完成一个给定的任务时,他(她)可能会提供一打或更多的潜在解决方案列表,但又会极其详细地标出每种方案的问题之处,让你不知所措,难以选择.而Visual C++ 2005,通过C++/CLI语言联编,引入了泛型的概念,使C++程序员可进一步提高程序的开发效率.关于 .NET泛型与C++模板,尽管句法上很相似,但泛型与模板是以完全不同的方法实现的,它们之间没有任何的内置兼容性. 说到泛型与模板的差别,相信每个 .NET平台的C++程序员都会问这个

Practical Guide to STL By Jeff Bogan

Introduction STL (Standard Template Library) is a good skill for anyone programming C++ in the modern day. I must say that it takes some getting used to, i.e. there is a fairly steep learning curve, and some of the names that are used are not very in

C++ vector的用法小结_C 语言

c++ vector用法 C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板. 标准库vector类型使用需要的头文件:#include <vector>.vector 是一个类模板.不是一种数据类型,vector<int>是一种数据类型.Vector的存储空间是连续的,list不是连续存储的. 一. 定义和初始化 vector< typeName > v1

从C++到.NET:将模板映射到泛型

本文配套源码 讨论 ISO-C++ 文本查询语言 (TQL) 应用程序到 Microsoft .NET Framework 和 C++/CLI 的转换.特别是,我将深入讨论如何将模板和标准模板库 (STL) 映射到 .NET 泛型工具.尽管在 1991 年,我曾在贝尔实验室从事过 Cfront 3.0 版的最初模板实现,并曾极力提倡使用这些模板,但我建议不要在 C++/CLI 中使用模板. 在 .NET 下,C++ 模板实例化的静态特性使其无法成为 C++/CLI 的"一等公民".在语