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