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

本文介绍了C++标准库中vector容器的关键操作,如assign()用于赋值,capacity()返回容器容量,size()返回元素数量,swap()交换两个vector的内容,以及resize()调整大小。通过示例代码展示了这些操作如何影响vector的状态和内存管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值