vector

来源:互联网 发布:unity3d 反射材质 编辑:程序博客网 时间:2024/04/30 06:14
Vector的常用成员函数
构造函数:
vector()
说明:默认构造函数
Example:vector< int > iv;

vector( SizeType count )
说明:构造一个vector,初始元素个数为count,初始值均为0
Example: vector< int > iv(3);

vector( SizeType count, ConstType &Val )
说明:构造一个vector,初始元素个数为count,初始值均为Val
Example: vector< int > iv( 3, 2 );

vector( const _vector& SourceVector )
说明:构造一个Vector,并将SouceVector中的元素完全Copy到构建的Vector中
Example: vector< int > iv1;
               vector< int > iv2( iv1 );

其他成员函数:
reference at( size_type Pos )
说明:取得vector在Pos位置的元素的引用,此函数和数组下标用法类似。
Example: vector < int > iv;
             iv.push_back( 1 );
             iv.push_back( 2 );
             iv.push_back( 3 );
             int i = iv.at(2);    //此时i的值应该是3,

reference back()
说明:返回vector最尾部元素的引用,相当于at( LastPos )。
Example: vector < int > iv;
             iv.push_back( 1 );
             iv.push_back( 2 );
             iv.push_back( 3 );
             int i = iv.back();//此时i的值应该是3,

iterator begin()
说明:返回Vector初始位置的迭代器(iterator)。————〉○2
Example: vector < int > iv;
             iv.push_back( 1 );
             iv.push_back( 2 );
             iv.push_back( 3 );
             vector<int>::iterator  It = iv.begin();
             int i = *It; //此时i的值应该是1,

○2在这里顺便简单介绍一下迭代器(iterator)。为了将容器和演算法联系起来,需要一种指向容器中元素的指针,它的使用方法必须类似于原生指针,也就是说我们可以利用*Iter取得元素本身,也可以利用Iter->调用元素的成员函数,甚至我们可能利用Iter++或者Iter--方式来取得元素序列中前一个或者后一个元素(当然某些容器的迭代器不支持这样的操作)。为了更好的封装迭代器的内部实现以及提高性能,每一个容器都有其独立的迭代器,这些特定的迭代器都是根据容器本身的特性来进行设计的,充分的考虑到了性能和空间上的问题。对于Vector来讲,它的迭代器在使用的时候完全可以等同于一般的指针。

Size_type capacity()
说明:返回vector当前空间大小,以元素个数为单位。
Example: vector < int > iv;
             iv.push_back( 1 );
             iv.push_back( 2 );
             iv.push_back( 3 );
             int iSapce = vi.capacity(); //此时iSPace的值应该是4,

void clear()
说明:清空vector中所有元素,但不释放空间
Example: vector < int > iv;
             iv.push_back( 1 );
             iv.push_back( 2 );
             iv.push_back( 3 );
             iv.clear();
             int iSize = iv.size(); //此时iSize = 0
             int iSapce = iv.capacity(); //此时iSapce的值应该是4,

bool empty()const
说明:判断vector是否为空。    
Example: vector < int > iv;
             iv.push_back( 1 );
             iv.empty();//结果应该为假
             iv.clear();
             iv.empty();//结果应该为真

iterator end()
说明:返回指向vector(最后一个元素+1)的迭代器,通常用来判断循环是否结束。
Example: vector < int > iv;
             iv.push_back( 1 );
             iv.push_back( 2 );

//循环整个Vector
for( vector<int>::iterator it = iv.begin(); it != iv.end(); ++it )
{
     Do Something….
}

iterator erase( iterator Where )
iterator erase( iterator First, iterator Last )
说明:删除一个位置为“Where”的元素,或者删除从“First”到“Last -1 ”的元素
Example: vector< int > iv;
             iv.push_back( 1 );
             iv.push_back( 2 );
             iv.push_back( 3 );
             iv.erase( iv.begin() + 1 ); //删除元素“2”
             iv.erase( iv.begin(), iv.begin() + 2 ); //删除元素“1”和“3”
erase的参数Where和First 、Last必须在[ begin(),end() ]范围之内,否则会发生非法访问的错误。

reference front()
说明:返回vector最前面元素的引用,相当于at( FirstPos )。
Example: vector< int > iv;
             iv.push_back( 1 );
             iv.push_back( 2 );
             iv.push_back( 3 );
             int i= iv.front(); //此时 i = 1;

iterator insert(iterator Where, const Type & Val )
说明:在“Where”位置插入指定元素“Val”。
Example: vector< int > iv;
             iv.push_back( 1 );
             iv.push_back( 3 ); //此时Vector中的元素为1,3
             iv.insert( iv.begin() + 1, 2 ); //此时Vector中的元素为1,2,3
insert的位置必须在[ begin(),end() ]范围之内,否则会发生非法访问的错误。    

void push_back( const Type &Val )
说明:在Vector尾部加入一个元素

void pop_back()
说明:删除Vector尾部的元素
Example:vector< int > iv;
            iv.push_back( 1 );
iv.push_back( 2 );
            iv.push_back( 3 );//此时元素为1,2,3
                    iv.pop_back();//此时元素为1,2
             
size_type size() const
说明:返回Vector中元素的个数。

reference operator[]( size_type Pos )
说明:[]操作符,使vector可以像数组一样访问
Example:vector< int > iv;
            iv.push_back( 1 );
iv.push_back( 2 );
            iv.push_back( 3 );
                    //iv[0] = 1, iv[1] = 2, iv[2] = 3
请注意:
1、operator[]只能用来取得已经存在的元素,而不能向vector中添加元素,例如下面的代码是错误的:
          vector< int > iv;
            iv[ 0 ] = 1;    //错误,vector的空间还没有被分配
2、operator[]和正常数组的使用方法一样,也同样没有越界检查,比如你通过iv[10] 的方式访问一个只有1个元素的vector,不会被提示出错,但这样做可能会有不可预计的事情发生。
0 0
原创粉丝点击