//在网上看了好久,自己总结了一下下,第一篇博客,呼呼,学到不少

基本概念

vector容器是一个模板类,可以存放任何类型的对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。

1、定义和初始化

* vector< 类型名 > 标识符 (n)   //定义容器大小为n

*   vector< 类型名 > 标识符(最大容量,初始所有值);

eg: vector< int > ivec( 10, -1 ); 定义了 ivec 它包含十个int型的元素 每个元素都被初始化为-1

*   vector<类型名> vector<typeName>v2(v1);    或v2=v1;或vector<typeName> v2(v1.begin(), v1.end());

//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被扩充为v1.size()。

*   拷贝数组中的元素:int a[ 6 ] = { -2, -1, 0, 1, 2, 1024 };

// 把 ia 的 6 个元素拷贝到 ivec 中 vector< int > ivec( a, a+6 );

// 拷贝 3 个元素 a[2], a[3], a[4] vector< int > ivec( &a[ 2 ], &a[ 5 ] );     //注意第二个指正要指到末尾元素的下一个元素

以下是事例:

 #include<iostream>
#include <vector>
using namespace std;
int main(){
int a[ ] = { -, -, , , , };
//拷贝数组中的元素
vector< int > vec1( a, a+ );
cout<<vec1[]<<' '<<vec1[]<<' '<<vec1[]<<' '<<vec1[]<<endl; //拷贝数组中的元素
//两个指针标记了对象的值的范围,第二个指针总是指向要拷贝的末元素的下一位置
vector< int > vec( &a[ ], &a[] );
cout<<vec[]<<' '<<vec[]<<' '<<vec[]<<' '<<vec[]<<endl; //vec[3]输出错误,因为不存在 //把vec 拷贝到另一个容器中
vector< int > newone;
newone = vec;
cout<<newone[]<<endl;
return ;
}

常用方法

c.clear()                              移除容器中所有数据。

c.empty()                            判断容器是否为空。

c.erase(pos)                       删除pos位置的数据

c.erase(beg,end)               删除[beg,end)区间的数据

c.front()                              传回第一个数据。

c.insert(pos,elem)              在pos位置插入一个elem拷贝

c.pop_back()                     删除最后一个数据。

c.push_back(elem)            在尾部加入一个数据。

c.resize(num)                     重新设置该容器的大小

c.size()                              返回容器中实际数据的个数。

c.begin()                           返回指向容器第一个元素的迭代器

c.end()                              返回指向容器最后一个元素的迭代器

使用迭代器

迭代器:迭代器是个所谓的智能指针,具有遍历复杂数据结构的能力,就看做是容器的专用指针吧,用容器时一般都要使用到这个,那种用数组索引的方法反而更加少用了,下面是一个简单的使用迭代器的示例:

 //利用迭代器更改容器中的某一个值
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> abc;
abc.push_back(); //push几个值进去
abc.push_back();
abc.push_back();
abc.push_back(); // 迭代器遍历寻遍
for(vector<int>::iterator it = abc.begin();it!=abc.end();)
{
if(*it ==)
it = abc.erase(it);
else
++it;
}
cout << "After remove 5:\n";
for(vector<int>::iterator i = abc.begin(); i < abc.end(); ++i)
{
cout << * i << " ";
}
cout << endl;
return ;
}

以下是一些简单的程序:

定义一个二维数组

 #include<iostream>
#include<vector>
using namespace std;
int main(){
int i = ,j = ; //容器内部的容器
//Array 是10行,且都为0
vector< vector<int> > Array(,vector<int>()); for(j = ; j < ; j++)
{
for (i = ; i < ; i++)
{
Array[j].push_back(i);
}
}
//输出
for( j = ; j < ; j++ )
{
for(i = ; i<Array[j].size(); i++)
{
cout << Array[j][i] << " ";
}
cout<< endl;
}
}

排序与逆向

 #include<iostream>
#include<vector>
#include<algorithm>
#include <cstdlib>
using namespace std;
int main(){
vector<int> num;
int element;
while(cin>>element)
num.push_back(element); sort(num.begin(),num.end()); //从大到小排序 reverse(num.begin(),num.end()); //逆向输出 for(int i = ;i<num.size();i++)
cout<<num[i]<<endl; system("pause");
return ;
}

定义二维动态数组

 #include<iostream>
#include<vector>
using namespace std;
int main(){
int i = ,j = ;
vector<vector<int> > Array;
vector<int> line;
for(j = ;j < ;j++){
Array.push_back(line); //要对每一个vector初始化,初始化列。
for (i = ; i < ; i++ )
{
Array[ j ].push_back( i );
}
} for(j = ;j < ;j++ )
{
for(i = ; i<Array[j].size(); i++)
{
cout << Array[j][i] << " ";
}
cout<< endl;
}
}

参考:http://blog.csdn.net/xiaohuizi2009/article/details/8067667

C++ 中vector的基本用法的更多相关文章

  1. C++中vector的remove用法

      我将从remove的复习开始这个条款,因为remove是STL中最糊涂的算法.误解remove很容易,驱散所有关于remove行为的疑虑——为什么它这么做,它是怎么做的——是很重要的. 这是rem ...

  2. c++中vector类的用法

    概括:向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container).跟任意其它类型容器一样,它能够存放各种类型的对象.可以简单的认为,向量是一个能够存放任意类型的动态 ...

  3. (转载)C++STL中vector容器的用法

     vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说vec ...

  4. STL中vector、list、deque和map的区别

    1 vector     向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...

  5. 【转】STL中vector、list、deque和map的区别

    1.vector 向量 相当于一个数组 在内存中分配一块连续的内容空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数 ...

  6. c++中vector的用法详解

    c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...

  7. 【转】java.util.vector中的vector的详细用法

    [转]java.util.vector中的vector的详细用法 ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.uti ...

  8. c++ 中vector 常见用法(给初学者)

    c++ 中 vector vector有两个参数,一个是size,表示当前vector容器内存储的元素个数,一个是capacity,表示当前vector在内存中申请的这片区域所能容纳的元素个数. ca ...

  9. C++中const 的各种用法

    C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: ; size = ; // error: assignment of read-only v ...

随机推荐

  1. Android 用户界面---拖放(Drag and Drop)(一)

    用Android的拖放框架,能够允许用户使用图形化的拖放手势,把数据从当前布局中的一个View对象中移到另一个View对象中.这个框架包括:拖拽事件类.拖拽监听器.以及辅助的方法和类. 尽管这个框架主 ...

  2. java线程安全理解

    java线程安全理解 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. ...

  3. Qt之模型/视图(自定义按钮)

    简述 衍伸前面的章节,我们对QTableView实现了数据显示.自定义排序.显示复选框.进度条等功能的实现,本节主要针对自定义按钮进行讲解,这节过后,也希望大家对自定义有更深入的了解,在以后的功能开发 ...

  4. mysql,多表的内外连接+子查询

    表: student house course 关系:student_course 多对多 student house 多对一 需求:查询房间1 的学生 都学习了什么课程 select s.s_nam ...

  5. [转]深入理解Flash Player重绘

    这个是tencent flash team的一篇文章,但团队的博客已经关闭了,所以就在这里备份下吧~ 后来有人把这篇文章又发布到9ria上了,引发了一些讨论,其中有两位大神发言了,内容在原文下方. 9 ...

  6. mysql 错误代码汇总

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除 ...

  7. 什么是 db time

    AWR中有 DB time这个术语,那么什么是DB time呢? Oracle10gR2 官方文档 给出了详细解释(Oracle10gPerformance Tuning Guide 5.1.1.2 ...

  8. 剑指offer-第三章高质量的代码(调整数组顺序使得奇数位于偶数的前面)

    题目:输入一个整数数组,实现一个函数中调整该数组中数字的顺序,使得所有的奇数位于数组的前半部,所有偶数位于数组的后半部. 思路:用两个指针p1和p2,分别指向数组的头和尾部,p1只向后移,p2只向前移 ...

  9. java UncaughtExceptionHandler 处理线程意外中止

    本文转自:http://peirenlei.iteye.com/blog/305079 Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个 ...

  10. 【转】bzero, memset ,setmem 区别

    原文网址:http://blog.csdn.net/agathe/article/details/6066157 bzero  原型: extern void bzero(void *s, int n ...