【C++】vector

读者老爷好,俺最近浅浅学了一些vector的知识,vector是STL容器的一种。有兴趣的话不妨垂阅!

目录

1.constructor

2.operator= 

3.reserve 

4.resize 

5.operator[] 

 6.front

7. back

 8.insert

9.erase 

10.小知识

 10.1.小知识1

10.2.小知识2 

10.3.小知识3


首先使用vector需要包含头文件<vector> 好吧。<vector>中的其中一个类模板vector就是本博客要介绍的。

进入vector的文档介绍 可以看到:

确实是一个类模板,第一个模板参数就是要存储的数据的类型,第二个模板参数是跟空间配置器和内存池相关的,不用理先。那我们就浅浅介绍一下。

其实当这个类模板实例化成具体的类时,这些个具体的类底层就是顺序表。也就是可以认为vector是“一个可以存放任意类型数据的顺序表”。 俺就浅浅介绍vector常用的接口:

PS:俺这篇博客介绍的vector就介绍C++98版本的部分接口哈!

1.constructor

看到文档介绍:

在C++98版本中,构造函数有四种,其中一种还是函数模板,我们一个个来介绍:


1.explicit vector (const allocator_type& alloc = allocator_type()) 

这就是一个无参构造呗。 

其中:

  • const allocator_type& alloc = allocator_type()是跟空间配置器有关的东东,咱们先不理先,就把这个函数当成无参构造。
  • 对于类模板内的成员函数,可以用类模板名代替类类型名。所以可以看到这个无参构造的函数名是vector,当然这个无参构造的函数名也可以是vector<T>。
#include<vector>
using namespace std;
void test1()
{
	vector<int> iv;
	vector<double> dv;
	vector<char> cv;
	//…………
}
int main()
{
	test1();
	return 0;
}

这样子使用就行!


2. explicit vector (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type())

这就是构造并初始化n个val。

其中:

  • const allocator_type& alloc = allocator_type()是跟空间配置器有关的东东,咱们先不理先(这点以下不再赘述)。
  • size_type可以去vector中查询到:

size_type就是size_t。 

  •  value_type也可在这里看到:

value_type就是类模板vector的第一个模板参数T。  

  •  对于第二个参数的缺省值value_type()。其实就是用无参构造函数value_type()构造一个匿名对象,用这个匿名对象拷贝构造一个临时对象,用这个临时对象作为缺省值。当然,这个临时对象通常来说会被优化掉。

额,对于自定义类型当然有构造函数的概念。若value_type,也就是T,如果是内置类型(比如int),咋办?

为了兼容这些场景,内置类型也有了构造函数的概念了。拿int举例,如:

#include<iostream>
using namespace std;
int main()
{
	int a = int();//默认是0
	int b = int(1);//1
	int c(2);//2
	int d = 3;//3
	cout << a << ' ' << b << ' ' << c << ' ' << d << endl;
}

运行结果:

  • 对于类模板内的成员函数,可以用类模板名代替类类型名。所以可以看到这个构造的函数名是vector,当然这个构造的函数名也可以是vector<T>(这点以下不再赘述)。

这样子使用就行:

#include<vector>
#include<string>
#include<iostream>
using namespace std;
void test2()
{
	vector<int> v1(3, 1);//构造v1并用3个1初始化
	vector<int> v2(3);//构造v2并用3个0初
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

X_chengonly

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

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

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

打赏作者

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

抵扣说明:

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

余额充值