vector初始化
#include <iostream> #include <string> #include <vector> int main() { std::vector<int> v1(10) ; //10个int数据,每个都为0 std::vector<int> v2(10,100);//10个int数据,每个为100 std::vector<int> v3{1,2,3,4,5};//5个int数据,分别为1,2,3,4,5 std::vector<std::string> v4{"C++"}; std::vector<std::string> v5{10}; std::vector<std::string> v6{10,"C++"}; std::vector<std::string> v7(10); std::vector<std::string> v8(10,"C++"); std::vector<std::string> v9{"C++","是","人类的好朋友"}; std::cout<<"--------------------------------------"<<std::endl; for(auto i : v1) std::cout<<i<<" "; std::cout<<std::endl; std::cout<<"--------------------------------------"<<std::endl; for(auto i : v2) std::cout<<i<<" "; std::cout<<std::endl; std::cout<<"--------------------------------------"<<std::endl; for(auto i : v3) std::cout<<i<<" "; std::cout<<std::endl; std::cout<<"--------------------------------------"<<std::endl; for(auto i : v4) std::cout<<i<<" "; std::cout<<std::endl; std::cout<<"--------------------------------------"<<std::endl; for(auto i : v5) std::cout<<i<<" "; std::cout<<std::endl; std::cout<<"--------------------------------------"<<std::endl; for(auto i : v6) std::cout<<i<<" "; std::cout<<std::endl; std::cout<<"--------------------------------------"<<std::endl; for(auto i : v7) std::cout<<i<<" "; std::cout<<std::endl; std::cout<<"--------------------------------------"<<std::endl; for(auto i : v8) std::cout<<i<<" "; std::cout<<std::endl; std::cout<<"--------------------------------------"<<std::endl; for(auto i : v9) std::cout<<i<<" "; std::cout<<std::endl; return 0; }
string和vertor下标只能访问已经存在的元素,不能创建元素(编译不会出错,运行时出错)
#include <iostream> #include <string> #include <vector> int main() { std::vector<int> i ; i[0] = 10 ; //错误 return 0; }
下标越界编译运行都没有报错,但是已经出错
#include <iostream> #include <string> #include <vector> int main() { std::vector<int> i(10) ; i[100] = 100 ; //错误 std::cout<<i[100]<<std::endl; return 0; }
向空的vector中添加元素
#include <iostream> #include <string> #include <vector> int main() { std::vector<int> i; for(decltype(i.size()) index=0;index<=100;++index) { i.push_back(index) ; } for(auto& re : i) { re *= re ; std::cout<<re<<std::endl ; } }
统计各个分段内的人数(0-9,10-19...90-99,100)
#include <iostream> #include <string> #include <vector> int main() { std::vector<unsigned> num(11,0) ;//11个元素,每个为0 unsigned grade = 0 ; while(std::cin>>grade) if(grade<=100) ++num[grade/10] ; for(auto i : num) std::cout<<i<<" "; std::cout<<std::endl; }
和string一样,vector也有size()和empty()方法