数据结构--006--STL容器Vector代码学习

对Vector进行了认识,那么就要好好来学习它的代码,然后读懂后就要自己在代码编译环境中进行敲击:


#include<iostream>
using namespace std;
#include<vector>
#include <algorithm>
#if 1
    void VectorTest()
	{
		vector<int> vec;
		int count = 0;
		for (int i = 0; i < 1000000; ++i)
		{
			vec.push_back(1);
			int size = vec.size();
			int capacity = vec.capacity();
			if (size == capacity)
			{
				cout << size << "\t" << capacity << endl;
				count++;
			}
		}
		cout << count << endl;
	}

	int main()
	{
		vector<int> vec1;		//声明一个int向量
		vector<int> vec2(7);    //声明一个初识大小为7的int向量
		vector<int> vec3(5, 2); //声明一个初识大小为5且值都是2的int向量
		vector<int> vec4(vec3); //用vec3构造
		int arr[] = { 1, 2, 3, 4, 5 };
		vector<int> vec5(arr, arr + 5);
		vector<int> vec6(&arr[1], &arr[4]);//将arr[1]--arr[4]范围元素作为vec6初始值,不包含arr[4]
		vector<string>vec7;

		vec1.push_back(10);
		vec1.push_back(20);
		vec1.push_back(30);//末尾添加元素

		vec1.pop_back();//末尾删除元素
		cout << *vec1.begin() << endl;//开始迭代器
		cout << *(vec1.end() - 1) << endl;//末尾迭代器  指向最后一个元素的下一个位置
		vec1[1] = 90;//下标访问  不检查是否越界
		vec1.at(0) = 80; //at方法访问 检查是否越界 越界抛出out_of_range
		vec1.cbegin(), vec1.cend();//const迭代器
		cout << vec1.front() << endl;//访问第一个元素 并不检查是否存在
		cout << vec1.back() << endl;//访问最后一个元素 并不检查是否存在
		int* p = vec1.data(); //返回指针指向数组  C++11
		vec1.clear();//清空向量
		for (int i = 0; i < 10; ++i)
		{
			vec1.push_back(i);
		}
		cout << "遍历输出:";
		//vector<int>::iterator it;
		for (auto it = vec1.begin(); it != vec1.end(); ++it)
		{
			cout << *it << " ";
		}
		cout << endl;
		cout << "元素个数:" << vec1.size() << endl;
		cout << "翻转后:";
		reverse(vec1.begin(), vec1.end());
		for (auto i : vec1)  //C++11
		{
			cout << i << " ";
		}
		cout << endl;
		cout << "排序后:";
		sort(vec1.begin(), vec1.end());//排序  头文件#include <algorithm>
		for (auto i : vec1)  //C++11
		{
			cout << i << " ";
		}
		cout << endl;

		vec1.swap(vec2); //交换
		cout << "交换后:";
		sort(vec1.begin(), vec1.end());//排序  头文件#include <algorithm>
		for (auto i : vec1)  //C++11
		{
			cout << i << " ";
		}
		cout << endl;
		bool bEmpty = vec1.empty();

		vec3.reserve(10);//向量最大存储长度
		vec3.reserve(3);

		vec3.assign(10, 4);
		VectorTest();//每次新增当前空间的1/2
		return 0;
	}
#endif //vector

 


主人要多研究代码哦!小妲己就不打扰主人了·········

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码字界陈冠希

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

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

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

打赏作者

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

抵扣说明:

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

余额充值