最近在練習使用STL中德各類容器,像vector,map,set之類的。ios
而後在使用vector的時候,無心間遇到了一個很二逼的問題。spa
主要是這樣的,請看源碼(C++):code
//錯誤的寫法: #include "stdafx.h" #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> MyVector; //這裏是沒有申明數量的,而下面用的下標訪問,會出現錯誤 for(int i=0;i<10;i++){ MyVector[i]=i; //這裏的訪問方式不對。 } cout<<MyVector.size()<<endl; cout<<MyVector.empty()<<endl; MyVector.clear(); cout<<MyVector.empty(); int a=0; cin>>a; return 0; } //改進的方法一 #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> MyVector(10); //申明的時候把向量的容量申明 for(int i=0;i<10;i++){ MyVector[i]=i; } cout<<MyVector.size()<<endl; cout<<MyVector.empty()<<endl; MyVector.clear(); cout<<MyVector.empty(); int a=0; cin>>a; return 0; } //改進的方法二 #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> MyVector; //申明的時候不申明向量的容量 for(int i=0;i<10;i++){ MyVector.push_back(i); //賦值的時候用push_back方法,從後插入。 } cout<<MyVector.size()<<endl; cout<<MyVector.empty()<<endl; MyVector.clear(); cout<<MyVector.empty(); int a=0; cin>>a; return 0; }