C++STL总结——vector:单端数组(向量)


包含头文件:vector

整合

//vector:单端数组
void PrintVector(vector<int>& v) {
	//利用迭代器打印vector容器
	for (vector<int>:: iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}

void vector_test_01() {
	vector<int> v1;	//无参构造(默认构造)

	for (int i = 0; i < 10; i++) {
		v1.push_back(i);
	}

	//利用区间的方式将v1赋值给v2,区间是左闭右开的
	vector<int> v2(v1.begin(), v1.end());

	vector<int> v3(5, 10);	//给v3赋值5个10

	vector<int> v4(v3);	//拷贝构造
}

void vector_test_02() {
	//赋值
	vector<int> v1;
	for (int i = 0; i < 10; i++) {
		v1.push_back(i);
	}

	vector<int> v2 = v1;	// =赋值

	vector<int>v3;
	// assign赋值 v.assign(begin, end):两个迭代器,将区间内的元素赋值给v
	v3.assign(v1.begin(), v1.end());

	vector<int> v4;
	v4.assign(5, 10);	//v.assign(n, m):给v赋值n个m
}

void vector_test_03() {
	//容量和大小
	vector<int> v1;
	for (int i = 0; i < 10; i++) {
		v1.push_back(i);
	}

	v1.empty();	//判断是否为空,空为true,不空为false(bool类型)

	int c = v1.capacity();	//v1的容量
	cout << c <<endl;

	int s = v1.size();	//v1的大小,总是<=容量
	cout << s << endl;

	//v.resize(n):当n>原大小,默认在尾部添加多余的0,
	//当<原大小,则删除尾部的其余元素
	v1.resize(15);

	v1.resize(20, 100);	//v.resize(n, m):当n>原大小,在尾部添加多余的m
}

void vector_test_04() {
	//插入和删除
	vector<int> v1;
	for (int i = 0; i < 10; i++) {
		v1.push_back(i);	//尾插法
	}

	//尾删
	v1.pop_back();

	//v.insert(iterator, n):在迭代器的位置插入元素n,
	//前一个参数只能是迭代器
	v1.insert(v1.begin(), 100);

	//v.insert(iterator, n, m):在迭代器的位置插入n个元素m,
	//前一个参数只能是迭代器
	v1.insert(v1.begin(), 2, 200);

	//v.erase(iterator):在迭代器的位置删除元素,参数只能是迭代器
	v1.erase(v1.begin());

	//v.erase(iterator, iterator):在两个迭代器的位置之间删除所有元素,
	//两个参数均只能是迭代器
	v1.erase(v1.begin(), v1.begin()+3);

	v1.clear();	//清空容器
}

void vector_test_05() {
	//数据的存取
	vector<int> v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}

	cout << v[3] << endl;	//使用v[n]来获得下标为n的元素,从0开始

	cout << v.at(3) << endl;	//使用v.at(n)来获得下标为n的元素,从0开始

	cout << v.front() << endl;	//v.front()返回第一个元素

	cout << v.back() << endl;	//v.back()返回最后一个元素
}

void vector_test_06() {
	//互换容器
	vector<int> v1;
	for (int i = 0; i < 10; i++) {
		v1.push_back(i);
	}

	vector<int> v2;
	for (int i = 9; i >= 0; i--) {
		v2.push_back(i);
	}

	v1.swap(v2);	//v1.swap(v2):交换两个容器
}

void vector_test_07() {
	//预留空间
	vector<int> v;

	//v.reserve(n):预留n大小的空间,不可被访问,
	//一般用于已知要开辟空间的大小,减少系统开辟空间的次数
	v.reserve(100);
}

迭代器打印

void PrintVector(vector<int>& v) {
	//利用迭代器打印vector容器
	for (vector<int>:: iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}

构造

void vector_test_01() {
	vector<int> v1;	//无参构造(默认构造)

	for (int i = 0; i < 10; i++) {
		v1.push_back(i);
	}

	//利用区间的方式将v1赋值给v2,区间是左闭右开的
	vector<int> v2(v1.begin(), v1.end());

	vector<int> v3(5, 10);	//给v3赋值5个10

	vector<int> v4(v3);	//拷贝构造
}

赋值

void vector_test_02() {
	//赋值
	vector<int> v1;
	for (int i = 0; i < 10; i++) {
		v1.push_back(i);
	}

	vector<int> v2 = v1;	// =赋值

	vector<int>v3;
	// assign赋值 v.assign(begin, end):两个迭代器,将区间内的元素赋值给v
	v3.assign(v1.begin(), v1.end());

	vector<int> v4;
	v4.assign(5, 10);	//v.assign(n, m):给v赋值n个m
}

容量和大小

void vector_test_03() {
	//容量和大小
	vector<int> v1;
	for (int i = 0; i < 10; i++) {
		v1.push_back(i);
	}

	v1.empty();	//判断是否为空,空为true,不空为false(bool类型)

	int c = v1.capacity();	//v1的容量
	cout << c <<endl;

	int s = v1.size();	//v1的大小,总是<=容量
	cout << s << endl;

	//v.resize(n):当n>原大小,默认在尾部添加多余的0,
	//当<原大小,则删除尾部的其余元素
	v1.resize(15);

	v1.resize(20, 100);	//v.resize(n, m):当n>原大小,在尾部添加多余的m
}

插入和删除

void vector_test_04() {
	//插入和删除
	vector<int> v1;
	for (int i = 0; i < 10; i++) {
		v1.push_back(i);	//尾插法
	}

	//尾删
	v1.pop_back();

	//v.insert(iterator, n):在迭代器的位置插入元素n,
	//前一个参数只能是迭代器
	v1.insert(v1.begin(), 100);

	//v.insert(iterator, n, m):在迭代器的位置插入n个元素m,
	//前一个参数只能是迭代器
	v1.insert(v1.begin(), 2, 200);

	//v.erase(iterator):在迭代器的位置删除元素,参数只能是迭代器
	v1.erase(v1.begin());

	//v.erase(iterator, iterator):在两个迭代器的位置之间删除所有元素,
	//两个参数均只能是迭代器
	v1.erase(v1.begin(), v1.begin()+3);

	v1.clear();	//清空容器
}

数据的存取

void vector_test_05() {
	//数据的存取
	vector<int> v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}

	cout << v[3] << endl;	//使用v[n]来获得下标为n的元素,从0开始

	cout << v.at(3) << endl;	//使用v.at(n)来获得下标为n的元素,从0开始

	cout << v.front() << endl;	//v.front()返回第一个元素

	cout << v.back() << endl;	//v.back()返回最后一个元素
}

互换容器

void vector_test_06() {
	//互换容器
	vector<int> v1;
	for (int i = 0; i < 10; i++) {
		v1.push_back(i);
	}

	vector<int> v2;
	for (int i = 9; i >= 0; i--) {
		v2.push_back(i);
	}

	v1.swap(v2);	//v1.swap(v2):交换两个容器
}

预留空间

void vector_test_07() {
	//预留空间
	vector<int> v;

	//v.reserve(n):预留n大小的空间,不可被访问,
	//一般用于已知要开辟空间的大小,减少系统开辟空间的次数
	v.reserve(100);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逸人止

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值