vector 的使用例子


#include "StdAfx.h"
#include <iostream>
#include <vector>
#include <iostream>
#include <algorithm>
#include <functional>

using namespace std;



typedef struct _student
{
	int num;
	char * name;
}student;

typedef vector <int> :: iterator vIntIndex;
typedef vector <student> ::iterator vStuIndex;
typedef void (* FUN_PRINT)(int num);

void array_num(vector <int> &arr, int a[], int num)
{
	for (int i=0;i<num;i++)
	{
		arr.push_back(a[i]);
	}
}

void int_print(int num)
{
	printf("%d",num);
}

void print_student_message(student & stu)
{
	printf("\n %d ",stu.num);
	printf("%s",stu.name);
}

int main(void)
{

	vector <int> arr;
	int a[] = {0,1,8,9,2,6,7};
	array_num(arr,a,7);

	vIntIndex index;
	index = find(arr.begin(),arr.end(),6);
	if (index != arr.end())
	{
		arr.insert(index,4);
	}
	index = find(arr.begin(),arr.end(),8);
	if (index != arr.end())
	{
		//这样就真的删除了么指定的元素了么?没有。其实只是内部的元素作了移动,vector的删除的时间复杂度是很高的。所以选择容器的时候,如果需要频繁在中间插入和删除元素,那选择vector就会影响效率了。
		//注意:插入或者删除操作会使得迭代器失效。  
		//原则:使用erase-remove惯用法删除元素  
		//v1.erase( remove(v1.begin(), v1.end(), 3.0), v1.end() ); 
		arr.erase(index);
	}

	vIntIndex end = arr.end();
	for(vIntIndex i = arr.begin();i!= end;i++)
	{

	}

	FUN_PRINT pFun = int_print;
	for_each(arr.begin(),arr.end(),pFun);
	int m = arr[2];

	//####################################################
	vector <student> students;
	student stus[5] = {0};
	stus[0].name = "lily";
	stus[0].num = 0;
	stus[1].name = "lucy";
	stus[1].num = 1;
	stus[2].name = "lilei";
	stus[2].num = 2;
	stus[3].name = "hanmeimei";
	stus[3].num = 3;
	stus[4].name = "nacy";
	stus[4].num = 4;

	for(int i = 0;i <5;i++)
	{
		students.push_back(stus[i]);
	}

	printf("\n ********************************************");

	for_each(students.begin(),students.end(),print_student_message);

	printf("\n ********************************************");

	vStuIndex stuend = students.end();
	for (vStuIndex i =students.begin(); i != stuend; i++)
	{
		print_student_message(*i);
	}

	return 0; 
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值