数据结构--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

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

猜你喜欢

转载自blog.csdn.net/ly1716/article/details/90147289