C++初识vector

发布时间:2022-06-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了C++初识vector脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

初识vector

  • ⭐️1.构造函数
  • ⭐️2.vector iterator 的使用
    • ✨2.1begin+end
    • ✨2.2 rbegin+rend
    • ✨2.3const迭代器
  • ⭐️3. vector 空间增长问题
    • ✨3.1reserve
    • ✨3.2resize
  • ⭐️4.vector 增删查改
    • ✨4.1尾插,尾删
    • ✨4.2 insert,operator[]
    • ✨4.3erase

C++初识vector

⭐️1.构造函数

C++初识vector

✨测试:

void test()
{
	vector<int> v;//无参构造
	vector<int> v1(2, 30);//构造并初始化
	string s("hello");
	//还可以用别的迭代器,比如string的
	vector<int> v4(s.begin(), s.end());//用迭代器进行初始化构造

}

C++初识vector

⭐️2.vector iterator 的使用

✨2.1begin+end

获取第一个数据位置的iterator/const_iterator, 获取最后一个数据的下一个位置的iterator/const_iterator.

C++初识vector

✨2.2 rbegin+rend

获取最后一个数据位置的reverse_iterator,获取第一个数据前一个位置的reverse_iterator.

C++初识vector

✨测试

	vector<int> v;
	v.push_back(2);
	v.push_back(4);
	v.push_back(6);
	v.push_back(8);
	//用迭代器进行遍历
	vector<int>::iterator it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
	//用反向迭代器进行遍历
	vector<int>::reverse_iterator rit = v.rbegin();
	while (rit != v.rend())
	{
		cout << *rit << " ";
		++rit;
	}
	cout << endl;

C++初识vector

✨2.3const迭代器

void print(const vector<int>& v)
{
	// const对象使用const迭代器进行遍历打印
	vector<int>::const_iterator it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
}

⭐️3. vector 空间增长问题

C++初识vector

capacity的代码在vs和g++下分别运行会发现,vs下capacity是按1.5倍增长的,g++是按2倍增长的。这个问题经常会考察,不要固化的认为,顺序表增容都是2倍,具体增长多少是根据具体的需求定义的。vs是PJ版本STL,g++是SGI版本STL。 reserve只负责开辟空间,如果确定知道需要用多少空间,reserve可以缓解vector增容的代价缺陷问 题。resize在开空间的同时还会进行初始化,影响size

✨3.1reserve

C++初识vector

✨3.2resize

C++初识vector

🌟从监视窗口看出,resize开了空间也进行了初始化,具体看需求。

⭐️4.vector 增删查改

C++初识vector

✨4.1尾插,尾删

C++初识vector

💫尾插和尾删还是比较简单的。

✨4.2 insert,operator[]

	vector<int>::iterator pos = find(v.begin(), v.end(), 2);
	if (pos != v.end())
	{
	    //这里涉及到迭代器失效的问题
		pos = v.insert(pos, 20);
	}
	//像数组一样访问
	for (size_t i = 0; i < v.size(); ++i)
	{
		cout << v[i] << " ";
	}
	cout << endl;

🌟成功在2之前插入20

C++初识vector

✨4.3erase

C++初识vector

🔴 insert和erase这里涉及到迭代器失效的问题,留着模拟实现vector的时候在 讲。

C++初识vector

C++初识vector

脚本宝典总结

以上是脚本宝典为你收集整理的C++初识vector全部内容,希望文章能够帮你解决C++初识vector所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: