自学内容网 自学内容网

C++—vector的常见接口与用法(正式进入STL)

目录

0.提醒

1.介绍

2.构造

1.正常构造

2.默认值构造

3.调用默认构造函数构造

3.遍历

1.迭代器

2.范围for

3.下标访问

4.容量

1.capacity:返回当前容器的容量

2.reserve:如果传的k比当前容量大,则扩容到比k大或者等于k的数;如果传的k比当前容量小也不会缩容(这点区别string,string中是可能缩容的)

5.resize:改变有效数据个数(如果传的k比当前有效数据个数大,则会增加指定数据;如果传的k比当前有效数据个数小,则会删除末尾的数据)

1.删除数据

2.增加数据

1.按照默认值或者调用默认构造函数(增加自定义类型时)增加数据

2.按照指定数据增加数据

6.增删系列

1.insert:插入数据(只支持迭代器区间了)

2.erase:删除数据(只支持迭代器区间)

3.push_back:尾插一个数据

7.swap:交换对象中的成员变量

8.clear:清除数据

9.vector的输入输出

1.输入

2.输出

10.二维数组


0.提醒

STL比较详细的部分功能介绍(包括迭代器等等)放在我的STL专栏中的string部分进行详细地讲解了,如果是初次接触STL部分的兄弟,建议先把我的string中涉及STL基础的部分先看完再来看这一篇,感谢观看!!!

1.介绍

C++中的vector就是顺序表

2.构造

1.正常构造

//拿10个1构造顺序表
vector<int> v1(10, 1);

//拿迭代器区间构造顺序表
vector<int> v2(v1.begin() + 1, v1.end() - 1);

//拷贝构造
vector<int> v3(v2);

2.默认值构造

//按照5个默认值构造
vector<int> v1(5);
for (auto v : v1)
cout << v << ' ';

结果:

3.调用默认构造函数构造

//构造了能存5个vector对象的顺序表,第二个参数没有填,
// 就是调用的默认构造,里面的5个顺序表都是空的
vector<vector<int>> vv(5);

3.遍历

1.迭代器

//迭代器
vector<int>::iterator it = v2.begin();
while (it != v2.end())
{
cout << *it<<' ';
it++;
}

2.范围for

//范围for
for (auto v : v2)
cout << v << ' ';

3.下标访问

//下标访问
for (int i = 0;i < v2.size();i++)
cout << v2[i] << ' ';

4.容量

1.capacity:返回当前容器的容量

cout<<v1.capacity();

2.reserve:如果传的k比当前容量大,则扩容到比k大或者等于k的数;如果传的k比当前容量小也不会缩容(这点区别string,string中是可能缩容的)

v1.reserve(100);
cout<<v1.capacity();

5.resize:改变有效数据个数(如果传的k比当前有效数据个数大,则会增加指定数据;如果传的k比当前有效数据个数小,则会删除末尾的数据)

1.删除数据

//拿10个1构造顺序表
vector<int> v1(10, 1);

//删除后面的4个数据
v1.resize(6);

//范围for
for (auto v : v1)
cout << v << ' ';

结果:

2.增加数据

1.按照默认值或者调用默认构造函数(增加自定义类型时)增加数据

//拿10个1构造顺序表
vector<int> v1(10, 1);

//增加5个默认值
v1.resize(15);

//范围for
for (auto v : v1)
cout << v << ' ';

结果:

2.按照指定数据增加数据

//拿10个1构造顺序表
vector<int> v1(10, 1);

//增加5个2
v1.resize(15,2);

//范围for
for (auto v : v1)
cout << v << ' ';

结果:

6.增删系列

1.insert:插入数据(只支持迭代器区间了)

//拿10个1构造顺序表
vector<int> v1(10, 1);

//在下标为4的位置插入2个3
v1.insert(v1.begin() + 4, 2, 3);

//范围for
for (auto v : v1)
cout << v << ' ';

结果:

2.erase:删除数据(只支持迭代器区间)

3.push_back:尾插一个数据

7.swap:交换对象中的成员变量

vector<int> v1(10, 1);
vector<int> v2(10, 2);
v1.swap(v2);

//范围for
for (auto v : v1)
cout << v << ' ';

结果:

8.clear:清除数据

vector<int> v1(10, 1);
v1.clear();

//范围for
for (auto v : v1)
cout << v << ' ';

结果:输出为空

9.vector的输入输出

由于vector没有重载流插入与流提取,所以我们采用别的输入输出方法。

1.输入

//先构造能存5个数据的顺序表,然后再遍历这个顺序表对每个空间进行输入
vector<int> v1(5, 5);
for (int i = 0;i < v1.size();i++)
cin >> v1[i];

2.输出

//先构造能存5个数据的顺序表,然后再遍历这个顺序表对每个空间进行输入
vector<int> v1(5, 5);
for (int i = 0;i < v1.size();i++)
cin >> v1[i];

//范围for进行输出
for (auto v : v1)
cout << v << ' ';

代码运行:

10.二维数组

vector<int> v1(6, 1);

//这个顺序表里存的是5个vector对象,相当于5行6列的二维数组
vector<vector<int>> v2(5, v1);


原文地址:https://blog.csdn.net/GGbond665/article/details/142411461

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!