vector容器assign(),capacity(),size(),swap(),get_allocator(),max_size(),reserve(),resize()

来源:互联网 发布:windows phone 10应用 编辑:程序博客网 时间:2024/05/16 05:47

assign() 对Vector中的元素赋值 
  void assign( input_iterator start, input_iterator end );   //
  void assign( size_type num, const TYPE &val );


capacity() 返回vector所能容纳的元素数量(在不重新分配内存的情况下)


get_allocator() 返回vector的内存分配器 


max_size() 返回Vector所能容纳元素数量的最大值(译注:包括可重新分配内存).


reserve() 设置Vector最小的元素容纳数量 函数为当前vector预留至少共容纳size个元素的空间.(译注:实际空间可能大于size)


resize() 改变Vector元素数量的大小 函数改变当前vector的大小为size,且对新创建的元素赋值val


size() 返回Vector元素数量的大小


swap() 交换两个Vector

 

 


#include <iostream>
#include <vector>
#include <algorithm>

 

void show_sequence(std::vector<int>::const_iterator first, std::vector<int>::const_iterator last)
{
 std::cout<<"{";
 std::copy(first, last, std::ostream_iterator<int>(std::cout, " "));
 std::cout<<"}"<<std::endl;
 
}
void inspect_vector(const std::vector<int>& v)
{
 std::cout<<" has "<<v.size()<<" elements: ";
 show_sequence(v.begin(), v.end());
}
int main()
{
 int v_size,v_capacity,a_size,a_capacity;


 std::vector<int> v(10); 
 std::vector<int> a;

 
 std::cout<<"vector v";
 inspect_vector(v);

 

 v_capacity = v.capacity(); //v的容量为10每个元素的值都为0
 v_size = v.size(); //v的大小为10每个元素

 

 std::cout<<"vector v 's capacity    : "<<v_capacity<<std::endl;
 std::cout<<"vector v 's size        : "<<v_size<<std::endl<<std::endl;

 

 std::cout<<"vector a";
 inspect_vector(a);

 

 a_capacity = a.capacity(); //a的容量为0
 a_size = a.size(); //a的大小为0

 

 std::cout<<"vector a 's capacity    : "<<a_capacity<<std::endl;
 std::cout<<"vector a 's size        : "<<a_size<<std::endl<<std::endl;

 

 for (int i=0; i<5; i++)//在v的末尾加5个数字分别为0,1,2,3,4
 {
  v.push_back(i);
 }

 

 a.assign(v.begin(),v.end());//将v中的值全部赋给 a 中的元素

 

 std::cout<<"vector v";
 inspect_vector(v);
 
 v_capacity = v.capacity(); //v的容量为大等于20,元素的值为0,0,0,0,0,0,0,0,0,0,0,1,2,3,4
 v_size = v.size(); //v的大小为15

 
 std::cout<<"vector v 's capacity    : "<<v_capacity<<std::endl;
 std::cout<<"vector v 's size        : "<<v_size<<std::endl<<std::endl;
 
 std::cout<<"vector a";
 inspect_vector(a);
 
 a_capacity = a.capacity(); //a的容量为15,元素的值为0,0,0,0,0,0,0,0,0,0,0,1,2,3,4
 a_size = a.size(); //a的大小为15

 
 std::cout<<"vector a 's capacity    : "<<a_capacity<<std::endl;
 std::cout<<"vector a 's size        : "<<a_size<<std::endl<<std::endl;


 a.assign(5,99);//将a中前五维的元素赋值为99,a中原来的值将被清空

 

 a_capacity = a.capacity(); //a的容量为15,元素值为99,99,99,99,99
 a_size = a.size(); //a的大小为5

 
 std::cout<<"vector a 's capacity    : "<<a_capacity<<std::endl;
 std::cout<<"vector a 's size        : "<<a_size<<std::endl<<std::endl;


 v.swap(a); // 交换两个容器里面的值

 

 std::cout<<"vector v";
 inspect_vector(v);

 
 v_capacity = v.capacity(); //v的容量为大等于15,元素值为99,99,99,99,99
 v_size = v.size(); //v的大小为5

 
 std::cout<<"vector v 's capacity    : "<<v_capacity<<std::endl;
 std::cout<<"vector v 's size        : "<<v_size<<std::endl<<std::endl;
 
 std::cout<<"vector a";
 inspect_vector(a);
 
 a_capacity = a.capacity(); //a的容量为大等于20,元素的值为0,0,0,0,0,0,0,0,0,0,0,1,2,3,4
 a_size = a.size(); //a的大小为15

 
 std::cout<<"vector a 's capacity    : "<<a_capacity<<std::endl;
 std::cout<<"vector a 's size        : "<<a_size<<std::endl<<std::endl;


 return 0;
}

 

注:灰色部份为输出语句,红色部份为重点,蓝色部份为计算容器的容量和大小.

原创粉丝点击