您的位置:首页 > 其它

【转】vector向量容器 基本操作

2013-11-22 09:16 537 查看
vector向量容器:

1.创建vector对象的三种形式:

(1)不指定容器元素的个数
vector<int> v;


(2)创建时指定容器的大小
vector<int> v(10);


(3)指定大小并赋初值
vector<int> v(10,0); 10个元素初值都是0


2.尾部元素扩张

使用push_back()对vector容器在尾部追加新元素,尾部追加新元素,vector容器会自动分配新内存空间。

Eg:

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> v;
    v.push_back(2);
    v.push_back(5);
    v.push_back(10);
    for(vector<int>::iterator i=v.begin();i!=v.end();i++)
        cout<<*i<<" ";
    cout<<endl;
    return 0;
}


3.下标方式访问vector元素

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> v(3);
    v[0]=2;
    v[1]=5;
    v[2]=10;
    for(int i=0;i<3;i++)
         cout<<v[i]<<" ";
    cout<<endl;
    return 0;
}






4.元素的插入

Insert()方法可以在vector对象的任意位置前插入一个新的元素,同时vector自动扩展空间。

Eg:

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> v;
    int a,i,k;
    for(i=0;i<5;i++)
    {
        cin>>a;
        v.push_back(a);
    }
    cin>>k;
    v.insert(v.begin()+k,10);
    for(vector<int>::iterator it=v.begin();it!=v.end();it++)
        cout<<*it<<" ";
    cout<<endl;
    return 0;
}




5.元素的删除

erase()方法可以删除vector迭代器所指的一个元素或一段区间中的所有元素

clear()方法则一次性删除vector中所有的元素

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> v;
    for(int i=0;i<10;i++)
       v.push_back(i);
    v.erase(v.begin()+2);   //删除下标为2的元素
    vector<int>::iterator it;
    for(it=v.begin();it!=v.end();it++)
         cout<<*it<<" ";
    cout<<endl;
    v.erase(v.begin()+1,v.begin()+5);   //注意这里是删除下标从1到4的所有元素
    for(it=v.begin();it!=v.end();it++)
         cout<<*it<<" ";
    cout<<endl;
    v.clear();
    cout<<v.size()<<endl;
    return 0;
}




6.反向排列算法

reverse()反向排列算法,需要定于头文件#include <algorithm>

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
    vector<int> v;
    for(int i=0;i<10;i++)
        v.push_back(i);
    reverse(v.begin(),v.end());
    vector<int>::iterator it;
    for(it=v.begin();it!=v.end();it++)
       cout<<*it<<" ";
    cout<<endl;
    return 0;
}


7.sort
可以自己设置比较函数cmp


#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
    vector<int> v;
    for(int i=0;i<10;i++)
        v.push_back(9-i);
    sort(v.begin(),v.end());
    vector<int>::iterator it;
    for(it=v.begin();it!=v.end();it++)
       cout<<*it<<" ";
    cout<<endl;
    return 0;
}




8.向量的大小

使用size()方法可以返回向量的大小,即元素的个数

使用empty()方法返回向量是否为空,非空返回0,空则返回1

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
    vector<int> v;
    for(int i=0;i<10;i++)
        v.push_back(i);
    vector<int>::iterator it;
    cout<<v.size()<<endl;
    v.clear();
    cout<<v.empty()<<endl;
    return 0;
}


http://blog.csdn.net/acdreamers/article/details/8680967
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: