库文件vector的用法

来源:互联网 发布:国联证券交易软件下载 编辑:程序博客网 时间:2024/05/22 04:44
 
查看文章
写新文章
 
库文件vector的用法
2010-03-16 16:41

vector的成员函数 和简单的使用代码
c.assign(beg,end)
将[beg; end)区间中的数据赋值给c。
c.assign(n,elem)
将n个elem的拷贝赋值给c。

c.at(idx)
传回索引idx所指的数据,如果idx越界,抛出out_of_range。

c.back()
传回最后一个数据,不检查这个数据是否存在。

c.begin()
传回迭代器中的第一个数据。

c.capacity()
返回容器中数据个数。

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

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

c.end()
指向迭代器中的最后一个数据地址。

c.erase(pos)
删除pos位置的数据,传回下一个数据的位置
c.erase(beg,end)
删除[beg,end)区间的数据,传回下一个数据的位置。

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

get_allocator
使用构造函数返回一个拷贝。

c.insert(pos,elem)
在pos位置插入一个elem拷贝,传回新数据位置。
c.insert(pos,n,elem)
在pos位置插入n个elem数据。无返回值。
c.insert(pos,beg,end)
在pos位置插入在[beg,end)区间的数据。无返回值。

c.max_size()
返回容器中最大数据的数量。

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

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

c.rbegin()
传回一个逆向队列的第一个数据。

c.rend()
传回一个逆向队列的最后一个数据的下一个位置。

c.resize(num)
重新指定队列的长度。

c.reserve()
保留适当的容量。

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

c1.swap(c2)
swap(c1,c2)
将c1和c2元素互换。
同上操作。

vector<Elem> c
创建一个空的vector。
vector <Elem> c1(c2)
复制一个vector。
vector <Elem> c(n)
创建一个vector,含有n个数据,数据均已缺省构造产生。
vector <Elem> c(n, elem)
创建一个含有n个elem拷贝的vector。
vector <Elem> c(beg,end)
创建一个以[beg;end)区间的vector。
c.~ vector <Elem>()
销毁所有数据,释放内存。
#include <iostream>
#include <vector>
using namespace std;
typedef vector<int> INTVECTOR;//自定义类型INTVECTOR
//测试vector容器的功能
int main( )
{
     //vec1对象初始为空
     INTVECTOR vec1;  
     //vec2对象最初有10个值为6的元素
     INTVECTOR vec2(10,6);
     //vec3对象最初有3个值为6的元素,拷贝构造
     INTVECTOR vec3(vec2.begin(),vec2.begin()+3);
     //声明一个名为i的双向迭代器
     INTVECTOR::iterator i;
     //从前向后显示vec1中的数据
     cout<<"vec1.begin()--vec1.end():"<<endl;
    
     for (i =vec1.begin(); i !=vec1.end(); ++i)
         cout << *i << " ";
        
     cout << endl;
     //从前向后显示vec2中的数据
     cout<<"vec2.begin()--vec2.end():"<<endl;
    
     for (i =vec2.begin(); i !=vec2.end(); ++i)
         cout << *i << " ";
     cout << endl;
     //从前向后显示vec3中的数据
     cout<<"vec3.begin()--vec3.end():"<<endl;
     for (i =vec3.begin(); i !=vec3.end(); ++i)
         cout << *i << " ";
     cout << endl;
    
     //测试添加和插入成员函数,vector不支持从前插入
     vec1.push_back(2);//从后面添加一个成员
     vec1.push_back(4);
vec1.insert(vec1.begin()+1,5);//在vec1第一个的位置上插入成员5
//从vec1第一的位置开始插入vec3的所有成员
vec1.insert(vec1.begin()+1,vec3.begin(),vec3.end());
cout<<"after push() and insert() now the vec1 is:" <<endl;
     for (i =vec1.begin(); i !=vec1.end(); ++i)
         cout << *i << " ";
     cout << endl;
     //测试赋值成员函数
     vec2.assign(8,1);    // 重新给vec2赋值,8个成员的初始值都为1
     cout<<"vec2.assign(8,1):" <<endl;
     for (i =vec2.begin(); i !=vec2.end(); ++i)
         cout << *i << " ";
     cout << endl;
    
    
     //测试引用类函数
     cout<<"vec1.front()="<<vec1.front()<<endl;//vec1第零个成员
    
     cout<<"vec1.back()="<<vec1.back()<<endl;//vec1的最后一个成员
    
     cout<<"vec1.at(4)="<<vec1.at(4)<<endl;//vec1的第五个成员
    
     cout<<"vec1[4]="<<vec1[4]<<endl;
    
     //测试移出和删除
     vec1.pop_back();//将最后一个成员移出vec1
    
     vec1.erase(vec1.begin()+1,vec1.end()-2);//删除成员
    
     cout<<"vec1.pop_back() and vec1.erase():" <<endl;
    
     for (i =vec1.begin(); i !=vec1.end(); ++i)
         cout << *i << " ";
     cout << endl;
    
     //显示序列的状态信息
     cout<<"vec1.size(): "<<vec1.size()<<endl;//打印成员个数
     cout<<"vec1.empty(): "<<vec1.empty()<<endl;//清空
    /*vec1.begin()--vec1.end():
vec2.begin()--vec2.end():
6 6 6 6 6 6 6 6 6 6
vec3.begin()--vec3.end():
6 6 6
after push() and insert() now the vec1 is:
2 6 6 6 5 4
vec2.assign(8,1):
1 1 1 1 1 1 1 1
vec1.front()=2
vec1.back()=4
vec1.at(4)=5
vec1[4]=5
vec1.pop_back() and vec1.erase():
2 6 5
vec1.size(): 3
vec1.empty(): 0

*/
}

#include<stdio.h>
#include<vector>
#include <iostream>

using namespace std;

void main()
{
int i = 0, j = 0;
vector<int> a(10,1),b(10,5);
vector<int>::iterator k;
vector< vector<int> > Array;
vector< int > line;
cout<<a.begin()<<"/t"<<a.end()<<endl;
cout<<a.end()-a.begin();
for(k=a.begin();k!=a.end();k++)
cout<<*k<<endl;
a.pop_back();
cout<<endl;
for(k=a.begin();k!=a.end();k++)
cout<<*k<<endl;
cout<<endl;
a.insert(a.begin()+4,b.begin(),b.end());
for(k=a.begin();k!=a.end();k++)
cout<<*k<<endl;
cout<<endl;
cout<<a.front()<<"   "<<a.back()<<endl;

cout<<a.at(3)<<"   "<<a[3]<<endl;

cout<<a.at(4)<<"    "<<a[4]<<endl;

   cout<<a.at(5)<<"       "<<a[5]<<endl;
  
cout<<endl;
for( j = 0; j < 10; j++ )
{
Array.push_back( line );//要对每一个vector初始化,否则不能存入元素。
for ( i = 0; i < 9; i++ )
{
   Array[ j ].push_back( i );
}
}
cout<<endl;
cout<<endl;
for( j = 0; j < 10; j++ )
{
for( i = 0; i < Array[ j ].size(); i++ )
{
   cout << Array[ j ][ i ] << " ";
}
cout<< endl;
}
cout<<endl;
cout<<endl;
vector< vector<int> > B(Array);
for( j = 0; j < 10; j++ )
{
for( i = 0; i < B[ j ].size(); i++ )
{
   cout << B[ j ][ i ] << " ";
}
cout<< endl;
}

cout<<Array.size()<<endl;
cout<<Array.max_size();
getchar();
}