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

基本概念

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. 转:asmx迷10分钟升级成wcf熟手指南

    前言:本文旨在帮助从未接触过wcf(.svc文件)的webservice开发人员,快速将传统的webService/asmx技术迁移到wcf.高手就不用浪费时间往下看了:) 以下所有操作均为vs201 ...

  2. 02.C语言关于指针的学习笔记

    指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内 ...

  3. 最新 Arduino 驱动 12接口/户外 LED显示屏/LED点阵屏/LED单元板

    起因 现有的驱动LED显示屏的资料,比较好的只有这个.但是它驱动的是08接口的室内显示屏,而我要驱动的是12接口的户外显示屏.两种屏幕的区别在于户外屏幕点阵比较稀疏,而且二者的扫描方式,驱动方式都不太 ...

  4. Android布局文件夹引起的问题

    Android 运行到setContentView(R.layout.splash); 总是出现如下的错误: java.lang.RuntimeException: Unable to start a ...

  5. POJ 2241 Mondriaan's Dream

    题意:给一块n×m的空地,用1×2的砖铺,有多少种方案. 解法:状压dp.考虑dp[i][j]表示前i - 1行都铺满时第i行的状态为j时的方案数.对于第i行,每个格子上是否有砖用0和1表示,0表示不 ...

  6. STL1-unordered_map

    最近几天我要整理一下遇到的STL的函数,本来其实我是没有打算学的,认为用C就完全可以实现,干嘛要记那么多复杂的函数呢,所以我之前的做法都是将常用的C函数自己做了一个lib库,使用起来也是蛮方便的呢,但 ...

  7. 序列for循环语句

    序列for循环语句 序列for循环语句允许重复遍历一组序列,而这组序列可以是任何可以重复遍历的序列,如由begin()和end()函数定义的STL序列.所有的标准容器都可用作这种序列,同时它也同样可以 ...

  8. 【LeetCode】83 - Remove Duplicates from Sorted Array

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  9. 2015 NI 校招笔试机试面试

    美国国家仪器NI也算是入驻上海很好的一家外企了,它是我们院的合作公司,加上今年NI在我们院扩招实习生,这次是一个难得的机会可以进入NI实习,可惜我并没有好好把握... 一.笔试 几个做错的印象特别深刻 ...

  10. DHCP工作过程详解

    DHCP动态主机配置协议的作用我想作为网管的兄弟们都应该知道了,这里我就不多废话了,今天我要谈的是DHCP的工作过程,了解了工作过程,要排除故障就容易了.   一.DHCP客户机初始化: 1. 寻找D ...