C/C++进阶学习笔记(二) 容器vector

来自https://www.hsli.top

vector可以理解为存放各种相同对象的容器,相当于一个可变长的数组,元素可以是各种对象

容器Vector

创建Vector

  1. 包含头文件#include <vector>

  2. 定义和初始化

    1
    2
    3
    4
    vector<int> ivec1; //定义int容器
    vector<int> ivec2(ivec1); //复制ivec1的内容到ivec2
    vector<int> ivec3(10,-1); //10个元素,都初始化为-1
    vector<string> svec(10,"Hi!"); //10个string,初始化为“Hi!”

操作Vector

1
2
3
4
5
6
7
8
9
10
11
v.empty();	//如果v为空,返回true
v.size(); //返回v的元素个数
v.push_back(t); //添加值为t的元素到v中
v[n]; //返回位置n的元素
v1 = v2; //赋值
v1 == v2; //比较,相等返回true
!=,<,<=,>,>= //保留原有的意义
v.insert(vec.begin()+i,a); //在v中第i+1个元素前面插入a;
v.erase(vec.begin()+2); //删除v中第3个元素
v.erase(vec.begin()+i,vec.end()+j); //删除v区间[i,j-1]的元素
v.clear(); //清空v

迭代器 Iterators

迭代器表示容器中的“位置”,可以理解为指向容器中元素的游标,使得编写与容器类型无关的泛型算法成为可能

迭代器访问vector

1
2
for (vector<string>::iterator it = str_vec.begin(); it != str_vec.end(); it++)	//迭代器访问vector
cout << *it << endl;

string中,size_type的作用有点像这里的迭代器,可以用于访问string中的特定元素,如下:

1
2
3
4
string str("Hello world!");
for(string::size_type ix = 0; ix != str.size(); ++ix)
str[ix] = '*';
>

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// vector.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <algorithm>
#include <vector>
#include <iostream>
#include <string>

using namespace std;

int main()
{
int i = 5;
string line;
vector<string> str_vec;
while (i--)
{
getline(cin, line);
str_vec.push_back(line);
} //录入vector各个元素

sort(str_vec.begin(),str_vec.end()); //排序,默认从小到大,包含于头文件#include <algorithm>


cout << endl << "sorted elements:" << endl;

for (vector<string>::iterator it = str_vec.begin(); it != str_vec.end(); it++) //迭代器访问vector
cout << *it << endl;

cout << "which element do you want to check:";
cin >> i;
line = str_vec[i]; //下标访问vector
cout << "Length:" << line.length() << endl;

return 0;
}
如果文章有用,请随意打赏