#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;
}
807

被折叠的 条评论
为什么被折叠?



