c++ primer(第五版)笔记 第九章 顺序容器(3)

31 篇文章 0 订阅
// 容量管理
	// 将 capacity 减少到和 size() 相同
	// 用于 vector string deque
	// 不一定执行
	// c.shrink_to_fit()
	
	// 不重新分配内存的话,c 可以保存多少元素
	// 用于 vector string
	// c.capacity()
	
	// 分配至少能容纳 n 个元素的空间
	// 用于 vector string
	// 不改变容器中元素的数量,仅影响预先分配多大的内存空间
	// 只有当需要的内存空间超过当前容量时,reserve 调用才会改变容量,至少分配与需求一样大的空间
	// 如果需求小于当前容量,容器不会退回内存空间
	// c.reserve(n)
	
// 适配器(adaptor),使某种事物的行为看起来像另一种事物
		// 都支持的操作和类型
		// size_type	足以保存当前类型的最大对象的大小
		// value_type	元素类型
		// container_type	实现适配器底层容器类型
		// A a		创建一个空适配器
		// A a(c)		创建一个适配器,带有容器 c 的一个拷贝
		// ==, !=, >, >=, <, <=
		// a.empty()	若 a 包含任何元素,返回 false, 否则返回 true
		// a.size()	返回 a 中元素数目
		// swap(a,b)
		// a.swap(b)	交换 a 和 b 的内容,必须相同的类型,包括底层容器类型也必须相同
		
	// stack	栈适配器,默认基于 deque 实现
		// 需要 push_back pop_back back 操作,可以用除 array,forward_list 外的其他容器构造
			// s.pop()			删除栈顶元素,但不返回该值
			// s.top()			返回栈顶元素,但不将其弹出
			// s.push(t)		创建一个元素,压入栈顶,该元素通过拷贝或移动 t 获得,或由 args 构造
			// s.emplace(args)
		
	// queue 	队列适配器,默认由 deque 实现,first-in,first-out (FIFO),队尾插入,队首删除
		// 需要 push_back back push_front front,可用 list deque 构造,不能是vector
			// q.back() 	返回尾元素,但不删除此元素
			
	// priority_queue	队列适配器,,默认由 vector 实现,按优先级,将元素插入所有优先级低于他的元素之前
		// 需要 front push_back pop_back,以及随机访问能力,可以用 vector deque 构造,不能是 list
			// q.top()		返回最高优先级的元素,但不删除此元素
			
			// 队列通用
				// q.pop()			返回 queue 的首元素或 priority_queue 最高优先级的元素,但不删除此元素
				// q.front()		返回首元素,但不删除此元素
				// q.push(t)		创建一个元素,压入栈顶,该元素通过拷贝或移动 t 获得,或由 args 构造
				// q.emplace(args)	在 queue 末尾或 priority_queue 中恰当的位置创建一个元素,值为 t,或由 args 构造
	
#include<vector>
#include<iostream>
#include<string>
#include<stack>
using std::vector;
using std::string;
using std::stack;
using std::endl;
using std::cout;
using std::cin;

int main()
{
	vector<int> vi{2,53,23};
	cout << "capacity:"<<vi.capacity() <<endl;
	cout << "size:"<<vi.size() <<endl;
	
	vi.pop_back();
	cout << "capacity:"<<vi.capacity() <<endl;
	cout << "size:"<<vi.size() <<endl;
	
	vector<string> vs;
	vs.reserve(5);
	cout << "before_capacity:"<<vs.capacity() <<endl;
	cout << "before_size:"<<vs.size() <<endl;
	
	string word;
	
	while (cin >> word)
		vs.push_back(word);
	vs.resize(vs.size() + vs.size() / 2);
	cout << "after_capacity:"<<vs.capacity() <<endl;
	cout << "after_size:"<<vs.size() <<endl;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值