C++ vector用法

// ConsoleApplication6.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include "stdlib.h"
#include <cstdio>
#include <list>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;


struct ST
{
int id;
double db;
};


void Origin(int num, vector<ST>& vt)
{
for (int i=0; i<num; i++)
{
ST temp;
temp.id = i + 1;
temp.db = (i + 1) * 10;
vt.push_back(temp);
}
}


void printst(ST &st)
{
cout<<"id: "<<st.id<<", db: "<<st.db<<endl;
}


int greater20(ST &st)
{
if (st.db > 20)
{
return 1;
}


return 0;
}


//遍历vector的两种方法
void Iter_for(vector<ST>& vt)
{
cout<<"Iter_for"<<endl;
vector<ST>::iterator itor;
for (itor = vt.begin(); itor != vt.end(); itor++)
{
cout<<"id: "<<itor->id<<", db: "<<itor->db<<endl;
}
}


void At_for(vector<ST>& vt)
{
cout<<"At_for"<<endl;
int nSize = vt.size();
for (int i=0; i<nSize; i++)
{
cout<<"id: "<<vt.at(i).id<<", db: "<<vt.at(i).db<<endl;
}
}


bool SortDb(ST &m, ST &n)
{
return m.db > n.db;
}


int _tmain(int argc, _TCHAR* argv[])
{
vector<ST> myvt;
Origin(5, myvt);

Iter_for(myvt); //1


Iter_for(myvt); //2


//算法调用打印 3
cout<<"for_each"<<endl;
for_each(myvt.begin(), myvt.end(), printst);

//计算个数
cout<<"count_if"<<endl;
cout<<count_if(myvt.begin(), myvt.end(), greater20)<<endl;


//排序算法
cout<<"DB倒序"<<endl;
sort(myvt.begin(), myvt.end(), SortDb);
for_each(myvt.begin(), myvt.end(), printst);


//插入元素
cout<<"插入元素"<<endl;
ST temp;
temp.id = 6;
temp.db = 6 * 10;
myvt.insert(myvt.begin(), temp);
for_each(myvt.begin(), myvt.end(), printst);


//pop_back删除元素
cout<<"pop_back删除元素"<<endl;
myvt.pop_back();
for_each(myvt.begin(), myvt.end(), printst);


//erase删除元素
cout<<"erase删除元素"<<endl;
myvt.erase(myvt.begin());
for_each(myvt.begin(), myvt.end(), printst);


//4
cout<<"pop_back"<<endl;
while (!myvt.empty())
{
ST tmp = myvt.back(); //取最后一个元素
cout<<"id: "<<tmp.id<<", db: "<<tmp.db<<endl;
myvt.pop_back(); //弹出最后一个
}


//vector交换
vector<ST> vt1;
vector<ST> vt2;
Origin(3, vt1);
cout<<"Vt1"<<endl;
for_each(vt1.begin(), vt1.end(), printst);
Origin(5, vt2);
cout<<"Vt2"<<endl;
for_each(vt2.begin(), vt2.end(), printst);
cout<<"vertor交换后"<<endl;
vt1.swap(vt2);
cout<<"Vt1"<<endl;
for_each(vt1.begin(), vt1.end(), printst);
cout<<"Vt2"<<endl;
for_each(vt2.begin(), vt2.end(), printst);
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值