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()方法