最近在练习使用STL中德各种容器,像vector,map,set之类的。
然后在使用vector的时候,无意间遇到了一个很二逼的问题。
主要是这样的,请看源码(C++):
//错误的写法: #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; }
一些细节的地方说明,请看源码中的注释,谢谢!