//vector<vector> arr(2, vector(5));//创建2行5列的二维数组,初值值为0
//1. vector在C++标准模板库中的部分内容,它是一个多功能的,
//能够操作多种数据结构和算法的模板类和函数库。
//2. 编程语言方面:vector是C++标准模板库中的部分内容,
//中文偶尔译作“容器”,但并不准确。它是一个多功能的,
//能够操作多种数据结构和算法的模板类和函数库。
//vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,
//简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
//3. 标准模板库(Standard Template Library,STL)是惠普实验室开发的一系列软件的统称。
//STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),
//几乎所有的代码都采用了模板类和模板函数的方式,
//这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
//v.empty();//检查是否为空
//v.capacity();//返回当前vector中最大可以存储数据的容量
//v.size();//返回v中元素的个数
//v[n];//获取v中第n个元素
//begin成员负责返回指向第一个元素(或第一个字符)的迭代器;
//end成员负责返回指向容器(或string对象)的尾元素的下一个位置的迭代器。
//begin和end返回的具体类型由对象是否是常量决定,如果对象是常量,
//begin和end返回const_iterator;如果对象不是常量,返回iterator;
//#include <iostream>
//#include <vector>
//int main(){
// size_t sz;
// std::vector<int> foo;
// sz = foo.capacity();
// std::cout << "making foo grow:\n";
// for (size_t i = 0; i < 100; i++){
// foo.push_back(1);
// if (sz != foo.capacity()){
// sz = foo.capacity();
// std::cout << "capacity changed:" << sz << '\n';
// }
// }
// std::vector<int> bar;
// sz = bar.capacity();
// bar.reserve(100);
// std::cout << "making foo grow:\n";
// for (size_t i = 0; i < 100; i++){
// bar.push_back(1);
// if (sz != bar.capacity()){
// sz = bar.capacity();
// std::cout << "capacity changed:" << sz << '\n';
// }
// }
//
// std::vector<int> myvector;
// for (int i = 0; i < 10; i++){
// myvector.push_back(i);
// }
// myvector.resize(5);
// myvector.resize(8,100);
// myvector.resize(12);
//
// std::cout << "myvector contains:\n";
// for (size_t i = 0; i < myvector.size(); i++){
//
// std::cout << " " << myvector[i];
// }
// std::cout << "\n";
// system("pause");
// return 0;
//}
vs:1.5增长
g++:2增长
//#include <iostream>
//#include <vector>
//
//void PrintVector(const std::vector<int>& v){
// //使用const_iterator进行遍历
// std::vector<int>::const_iterator it = v.cbegin();
// while (it != v.cend()){
// std::cout << *it++ << " ";
// }
// std::cout << std::endl;
//}
//int main(){
// std::vector<int> v;
// v.push_back(1);
// v.push_back(2);
// v.push_back(3);
// v.push_back(4);
// //使用迭代器进行遍历
// std::vector<int>::iterator it = v.begin();
// while (it != v.end()){
// std::cout << *it++ << " ";
// }
// std::cout << std::endl;
// //使用迭代器进行修改
// it = v.begin();
// while (it != v.end()){
// *it *= 2;
// ++it;
// }
// //使用反向迭代器进行打印
// std::vector<int>::reverse_iterator rit = v.rbegin();
// while (rit != v.rend()){
// std::cout << *rit++ << " ";
// }
// std::cout << std::endl;
// PrintVector(v);
//
// system("pause");
// return 0;
//}
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
int a[] = { 1, 2, 3, 4 };
vector<int> v(a, a + sizeof(a) / sizeof(int));
vector<int>::iterator it = v.begin();
while (it != v.end()){
cout << *it++;
}
cout << endl;
v.pop_back();
v.pop_back();
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
//使用find查找3所在的位置
vector<int>::iterator pos = find(v.begin(), v.end(), 3);
//插入数据,导致pos迭代器失效
v.insert(pos, 30);
pos = find(v.begin(), v.end(), 3);
//删除数据,导致pos迭代器失效
v.erase(pos);
it = v.begin();
while (it != v.end()){
cout << *it++<<" ";
}
cout << endl;
system("pause");
return 0;
}