STL中vector的使用

 

作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。


特别注意:

使用vector需要注意以下几点:

1、如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低;

2、Vector作为函数的参数或者返回值时,需要注意它的写法:

   double Distance(vector&a, vector&b) 其中的“&”绝对不能少!!!
原文:https://blog.csdn.net/duan19920101/article/details/50617190 
vector中可以存基本类型,也可以存储类对象,数组等。

代码实现:

 vector vec;
    for(int i=0;i<10;i++)
   {
       vec.push_back(i);
   }

   vec.insert(vec.begin()+1,5);//在下标为1的位置插入5,其余元素向后移动

   vector::iterator it;
   for(it = vec.begin();it != vec.end();it++)//使用迭代器输出
   {
       cout<<*it;
   }
    cout<

在vector中reverse(vec.begin(),vec.end());可以全部翻转,也可以局部翻转

reverse(vec.begin()+2,vec.end()-3);//只要注意使用范围就可以。

 

 

定义一个二维动态数组u,实现乘法口诀。

#include 
#include 
#include 
using namespace std;

int main()
{

    int arr[10][10]={0};
    for(int i=1;i<10;i++)
    {
        for(int j=1;j<10;j++)
        {
            arr[i][j]=i*j;
            if(i>=j)
            cout< > array(10,vector(0));//vector的二维数组
    for(int i=1;i<10;i++)
    {
        for(int j=0;j<9;j++)
        {
            array[i].push_back(i*j);
        }
    }

    for(int i=1;i=j)
        {
            cout<

 

 

#include 
#include 
using namespace std;
int main()
{
	vector v1;
	vector::iterator iter1;
	vector::iterator iter2;
	v1.push_back('m');
	v1.push_back('n');
	v1.push_back('o');
	v1.push_back('p');
 
	cout << "v1.front() = " << v1.front() << endl;
	cout << "v1.back() = " << v1.back() << endl;
 
	iter1 = v1.begin();
	cout << *iter1 << endl;
	iter2 = v1.end()-1; //注意v1.end()指向的是最后一个元素的下一个位置,所以访问最后一个元素
                        //的正确操作为:v1.end() - 1;
	cout << *iter2 << endl;
	return 0;
}

(1) 使用reverse将元素翻转:需要头文件#include

reverse(vec.begin(),vec.end());将元素翻转,即逆序排列!

(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含)

(2)使用sort排序:需要头文件#include

sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).

可以通过重写排序比较函数按照降序比较,如下:

定义排序比较函数:

bool Comp(const int &a,const int &b)
{
    return a>b;
}
调用时:sort(vec.begin(),vec.end(),Comp),这样就降序排序。 

 

输出Vector的中的元素   

vector vecClass; 

int nSize = vecClass.size();   

 //打印vecClass,方法一:  

for(int i=0;i {  
   cout< }  
   cout<

需要注意的是:以方法一进行输出时,数组的下表必须保证是整数。
 //打印vecClass,方法二:     

for(int i=0;i {  
   cout< }  
   cout< //打印vecClass,方法三:输出某一指定的数值时不方便

for(vector::iterator it = vecClass.begin();it!=vecClass.end();it++)  
{  
    cout<<*it<<"   ";  
}  
    cout<

二维数组的使用:

#include "stdafx.h"
#include
#include  
#include  
using namespace std;
int main()
{
    using namespace std;
    int out[3][2] = { 1, 2,  3, 4,5, 6 };
    vector v1;
    v1.push_back(out[0]);
    v1.push_back(out[1]);
    v1.push_back(out[2]);
 
    cout << v1[0][0] << endl;//1
    cout << v1[0][1] << endl;//2
    cout << v1[1][0] << endl;//3
    cout << v1[1][1] << endl;//4
    cout << v1[2][0] << endl;//5
    cout << v1[2][1] << endl;//6
 
    return 0;
}


vector中insert()的用法详解:http://blog.csdn.net/duan19920101/article/details/51557854

原文:https://blog.csdn.net/duan19920101/article/details/50617190 
 

 

你可能感兴趣的:(c++,STL)