现在的位置: 首页 > 综合 > 正文

我在使用vector时候遇到的二逼问题

2013年08月16日 ⁄ 综合 ⁄ 共 1025字 ⁄ 字号 评论关闭

最近在练习使用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;
}


一些细节的地方说明,请看源码中的注释,谢谢!

抱歉!评论已关闭.