双端队列deque比向量vector更有优势
vector是动态数组,在堆上
vector比array更常用
不需要变长,容量较小,用array
需要变长,容量较大,用vector
1 at()
取出下标
2 c_str()
执行
3 clear()
清空
4 erase()
根据迭代器的位置,删除元素
erase(myvector.begin() + 3)
5 fill
填充
6 find
7 find_if
8 find_if_not
9 insert()
插入元素
insert(myvector.begin() + 3, 998);//在第4个位置插入
10 pop_back()
删除最后一个元素
11 push_back()
push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。
12 size()
求数组元素个数
13 sort
排序
14 swap()
交换
1 at()
取出下标
4 erase()
根据迭代器的位置,删除元素
erase(myvector.begin() + 3)
5 insert()
插入元素
insert(myvector.begin() + 3, 998);//在第4个位置插入
6 pop_back()
删除最后一个元素
7 push_back()
push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。
8 size()
求数组元素个数
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 void main() 6 { 7 std::vector<int>myvector;//创建一个数组,数组元素是int类型 8 9 myvector.push_back(1);//尾部加入一个数据 10 myvector.push_back(11); 11 myvector.push_back(111); 12 myvector.push_back(1111); 13 myvector.push_back(2); 14 15 myvector.pop_back();//删除尾部元素 16 17 for (int i = 0; i < myvector.size(); i++)//遍历 18 { 19 //std::cout << myvector[i] << std::endl;//上下一样 20 std::cout << myvector.at(i) << std::endl;//上下一样,at()可以取出下标 21 } 22 std::cout << std::endl; 23 24 //根据迭代器的位置删除 25 myvector.erase(myvector.begin() + 3);//删除第四个元素。删除第3个元素(从0开始计算的话) 26 27 for (int i = 0; i < myvector.size(); i++)//遍历 28 { 29 if (1) 30 { 31 //可以增加查询,修改功能 32 } 33 std::cout << myvector[i] << std::endl; 34 } 35 std::cout << std::endl; 36 37 myvector.insert(myvector.begin() + 2, 998);//在第三个位置前插入,新数据变成第三。在第2个位置前插入,新数据变成第2(从0开始计算的话) 38 39 for (int i = 0; i < myvector.size(); i++)//遍历 40 { 41 std::cout << myvector[i] << std::endl; 42 } 43 std::cout << std::endl; 44 45 system("pause"); 46 }
2 c_str()
执行
3 clear()
清空
6 pop_back()
删除最后一个元素
7 push_back()
push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。
8 size()
求数组元素个数
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 void main() 6 { 7 std::vector<std::string>string1;//定义一个字符串数组 8 9 string1.clear();//clear清空 10 11 string1.push_back("notepad");//push_back尾部加入 12 string1.push_back("calc"); 13 string1.push_back("mspaint"); 14 string1.pop_back();//pop_back删除尾部元素 15 16 for (int i = 0; i < string1.size(); i++)//size()长度 17 { 18 system(string1[i].c_str());//c_str执行,删除了最后一个,因此将会执行两个 19 } 20 21 system("pause"); 22 }
//正向迭代器iterator,begin()返回一个迭代器,它指向容器c的第一个元素,end()返回一个迭代器,它指向容器c的最后一个元素的下一个位置
//反向迭代器reverse_iterator,rbegin()返回一个逆序迭代器,它指向容器c的最后一个元素,rend()返回一个逆序迭代器,它指向容器c的第一个元素前面的位置
反向迭代器是一种反向遍历容器的迭代器。也就是,从最后一个元素到第一个元素遍历容器。反向迭代器将自增(和自减)的含义反过来了:对于反向迭代 器,++ 运算将访问前一个元素,而 -- 运算则访问下一个元素。
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 void main() 6 { 7 std::vector<std::string>string1;//创建一个字符串数组 8 9 string1.clear();//清空 10 11 string1.push_back("notepad");//尾部加入 12 string1.push_back("calc"); 13 string1.push_back("mspaint"); 14 15 //正向迭代器iterator,begin()返回一个迭代器,它指向容器c的第一个元素,end()返回一个迭代器,它指向容器c的最后一个元素的下一个位置 16 std::vector<std::string>::iterator ibegin, iend;//创建两个迭代器指针 17 ibegin = string1.begin();//初始化迭代器指针,数据起始点 18 iend = string1.end();//初始化迭代器指针,结束 19 20 for (; ibegin != iend; ibegin++)//从头到尾 21 { 22 std::string tempstr = *ibegin;//创建中间临时变量,获取指针指向的数据 23 system(tempstr.c_str());//执行 24 } 25 26 //反向迭代器reverse_iterator,rbegin()返回一个逆序迭代器,它指向容器c的最后一个元素,rend()返回一个逆序迭代器,它指向容器c的第一个元素前面的位置 27 std::vector<std::string>::reverse_iterator rbegin = string1.rbegin();//创建迭代器指针,数据起始点 28 std::vector<std::string>::reverse_iterator rend = string1.rend();//创建迭代器指针,结束 29 30 while (rbegin != rend)//从尾到头 31 { 32 std::string tempstr = *rbegin;//获取指针指向的数据 33 system(tempstr.c_str());//执行 34 rbegin++;//指针移动 35 } 36 37 system("pause"); 38 }
7 push_back()
push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。
8 size()
求数组元素个数
//创建一个数组变量,元素是数组
vector可用于管理不规则的树状结构
国家-省-市县
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 void main() 6 { 7 std::vector<int>myvector1;//创建一个数组变量,元素是int类型 8 myvector1.push_back(12); 9 myvector1.push_back(13); 10 myvector1.push_back(14); 11 12 std::vector<int>myvector2;//创建一个数组变量,元素是int类型 13 myvector2.push_back(22); 14 15 std::vector<int>myvector3;//创建一个数组变量,元素是int类型 16 myvector3.push_back(32); 17 myvector3.push_back(37); 18 19 std::vector<std::vector<int>>allvector;//创建一个数组变量,元素是数组 20 allvector.push_back(myvector1); 21 allvector.push_back(myvector2); 22 allvector.push_back(myvector3); 23 24 for (int i = 0; i < allvector.size(); i++)//遍历 25 { 26 for (int j = 0; j < allvector[i].size(); j++) 27 { 28 std::cout << " " << allvector[i][j]; 29 } 30 std::cout << std::endl; 31 } 32 33 system("pause"); 34 }
fill
1 #include <iostream>
2 #include <algorithm>
3 #include <vector>
4
5 template <class T>
6 class show
7 { 8 public: 9 void operator()(T &t) 10 { 11 std::cout << t << " "; 12 } 13 }; 14 15 void main() 16 { 17 std::vector<int>myv; 18 19 myv.push_back(7); 20 myv.push_back(8); 21 myv.push_back(9); 22 myv.push_back(4); 23 myv.push_back(5); 24 myv.push_back(6); 25 26 fill(myv.begin() + 2, myv.end(), 10);//从下标2开始到尾部,用10填充 27 28 for_each(myv.begin(), myv.end(), show<int>()); 29 }
find
1 #include <iostream> 2 #include <vector> 3 4 void main() 5 { 6 std::vector<int>myv; 7 8 myv.push_back(1); 9 myv.push_back(2); 10 myv.push_back(3); 11 12 auto i = find(myv.begin(), myv.end(), 22); 13 14 if (i == myv.end()) 15 { 16 std::cout << "not found" << std::endl; 17 } 18 else 19 { 20 std::cout << *i << std::endl; 21 } 22 }
sort
全部元素排序
1 #include <iostream> 2 #include <algorithm> 3 #include <vector> 4 5 template <class T> 6 class show 7 { 8 public: 9 void operator()(T &t) 10 { 11 std::cout << t << " "; 12 } 13 }; 14 15 void main() 16 { 17 std::vector<int>myv; 18 19 myv.push_back(7); 20 myv.push_back(8); 21 myv.push_back(9); 22 myv.push_back(4); 23 myv.push_back(5); 24 myv.push_back(6); 25 26 sort(myv.begin(), myv.end());//排序 27 28 for_each(myv.begin(), myv.end(), show<int>()); 29 }
sort
部分元素排序
1 #include <iostream> 2 #include <algorithm> 3 #include <vector> 4 5 template <class T> 6 struct show 7 { 8 public: 9 void operator()(T &t) 10 { 11 std::cout << t << " "; 12 } 13 }; 14 15 void main() 16 { 17 std::vector<char>myv; 18 19 myv.push_back('B'); 20 myv.push_back('A'); 21 myv.push_back('C'); 22 myv.push_back('Y'); 23 myv.push_back('Z'); 24 myv.push_back('X'); 25 26 for_each(myv.begin(), myv.end(), show<char>()); 27 std::cout << std::endl; 28 29 sort(myv.begin(), myv.begin() + 3); 30 31 for_each(myv.begin(), myv.end(), show<char>()); 32 std::cout << std::endl; 33 }