STL-vector learning

This is the test code: 

# if 0
vector是单口容器
push_back():从尾部添加元素
pop_back():从尾部弹出元素
v.begin():容器的开始指针
v.end():容器的结尾指针
v.rbegin():指向最后一个元素的指针
v.rend():指向开头元素前面的元素的指针 
内存动态增长的原理: 
	先分配一块更大的空间,将原来的元素全部复制到新分配的内存空间;释放原空间 
# endif 
# include<iostream>
# include<algorithm>
# include<vector> 

using namespace std;

int arr[] = {2,4,1,5,9};

void printV(vector<int> v)
{
	for(vector<int>::iterator it = v.begin();it != v.end();++it)
		cout << (*it) << " ";
	cout << endl;
}

void test1()
{//初始化 
	vector<int> v1;//初始化1
	v1.assign(arr,arr+sizeof(arr)/sizeof(int));//赋值
	
	
	//初始化 
	vector<int> v2(arr,arr+sizeof(arr)/sizeof(int));
	vector<int> v3(v2.begin(),v2.end());
	vector<int> v4(v2);
	
	cout << "v1:" << endl;
	printV(v1);
	cout << "v2:" << endl; 
	printV(v2);
	cout << "v3:" << endl;
	printV(v3);
	cout << "v4:" << endl;
	printV(v4); 
}

void test2()
{//赋值操作 
	 vector<int> v(arr,arr+sizeof(arr)/sizeof(int));
	 
	 vector<int> v1 = v;//重载等号
	 vector<int> v2;
	 v2.assign(v1.begin(),v1.end());
	 vector<int> v3;
	 v3.assign(arr,arr+sizeof(arr)/sizeof(int));
	 cout << "v1:" << endl;
	 printV(v1);
	 cout << "v2:" << endl;
	 printV(v2);
	 cout << "v3:" << endl;
	 printV(v3);
 }
 
void test3()
{//swap()函数
	int arr1[] = {100,200,300};
	
	vector<int> v(arr1,arr1+sizeof(arr1)/sizeof(int));
	vector<int> v2(arr,arr+sizeof(arr)/sizeof(int));
	
	cout << "v:" << endl;
	printV(v);
	cout << "v2:" << endl;
	printV(v2);
	v.swap(v2);
	cout << "------------" << endl; 
	cout << "v:" << endl;
	printV(v);
	cout << "v2:" << endl;
	printV(v2);
}

void test4()
{//大小函数 
	vector<int> v;
	v.assign(arr,arr+sizeof(arr)/sizeof(int));
	if(!v.empty())
		printV(v);
	cout << "size:" << v.size() << endl;
	cout << "capacity:" << v.capacity() << endl;
	cout << "---------" << endl;
	v.resize(10,1);
	printV(v);
	cout << "---------" << endl;
	v.resize(2);
	printV(v);
}

void test5()
{//用swap来缩减空间 
	vector<int> v;
	for(int i = 0;i < 10;++i)
		v.push_back(i);
	printV(v);
	cout << "size:" << v.size() << endl;
	cout << "capacity:" << v.capacity() << endl;
	cout << "---------" << endl;
	vector<int> (v).swap(v);
	cout << "size:" << v.size() << endl;
	cout << "capacity:" << v.capacity() << endl;
}

void test6()
{//存取操作 
	vector<int> v;
	v.assign(arr,arr + sizeof(arr)/sizeof(int));
	cout << v.front() << endl;
	cout << v.back() << endl;
	
	for(int i = 0;i < v.size();++i)
		cout << v[i] << " "; 
	cout << endl;
	cout << "--------" << endl;
	for(int i = 0;i < v.size();++i)
		cout << v.at(i) << " ";
	cout << endl;
}

void test7()
{//插入、删除 
	vector<int> v;
	v.push_back(10); 
	v.push_back(20);
	v.push_back(30);
	printV(v);
	cout << "--------" << endl;
	v.insert(v.begin() + 1,1);
	printV(v);
	cout << "--------" << endl; 
	v.insert(v.begin(),100);
	printV(v);
	cout << "--------" << endl;
	v.erase(v.begin()+1);
	printV(v);
	cout << "--------" << endl;
	v.clear();
	cout << "size:" << v.size() << endl;
}

int main()
{
	//test1();
	//test2(); 
	//test3();
	//test4();
	//test5();
	//test6();
	test7();

 return 0;
}

Attach the results of each test:

test1:

test2: 

test3: 

test4:

test5:

test6:

 

 

test7:

Guess you like

Origin blog.csdn.net/qq_40479037/article/details/86827772