/*
//vector(向量)类模板
#pragma warning(disable:4186) //消除编译警告信息
#include<vector>
int main()
{
vector<int> vec1;
cout<<"ok!"<<endl;
return 0;
}
*/
/*
#include<vector>
#include<string>
#include<iostream>
using namespace std;
int main()
{
vector<int>vec1;
vec1.reserve(5);
vec1.push_back(10);
vec1.push_back(20);
vec1.push_back(30);
vec1.push_back(40);
vector<int>::iterator it1; //定义一个迭代器对象
for(it1=vec1.begin();it1!=vec1.end();++it1) //用迭代器遍历整个容器
cout<<*it1<<endl;
vector<string> vec; //vector是类模板,使用时,先定义类对象
vec.reserve(4); //预先设置容器的容量
cout<<"the size is 4"<<endl;
vec.push_back("1.Yangyang"); //向容器中添加元素
vec.push_back("2.Lijian");
vec.push_back("3.Eson");
//vec.push_back("4.Leijiayin");
cout<<"OK!"<<endl;
vector<string>::iterator it; //定义一个迭代器对象
for(it=vec.begin();it!=vec.end();++it) //用迭代器遍历整个容器
cout<<*it<<endl;
int m = vec.size(); //返回容器中现有的元素个数
int n = vec.capacity(); //返回容器中能够容纳的元素个数
int k = vec.max_size(); //返回容器所能容纳的最大元素数
cout<<"vector:vec,size is"<<m<<endl;
cout<<"vector:vec,capacity is"<<n<<endl;
cout<<"vector:vec,max_size is"<<k<<endl;
vec.resize(10); //修改容器的大小
cout<<"resize 10 "<<endl;
int n1=vec.capacity();
int n2=vec.size();
cout<<"vector:vec,capacity is"<<n1<<endl;
cout<<"vector:vec,size is"<<n2<<endl;
for(it=vec.begin();it!=vec.end();++it)
{
if(*it=="")
cout<<"**********"<<endl;
cout<<*it<<endl;
}
return 0;
}
*/
/*
#include<vector>
#include<iostream>
using namespace std;
struct ST //定义结构体类型
{
int id;
double db;
};
void Origin(int num,vector<ST>&vt) //定义初始化函数
{
int m=num;
ST temp;
for(int i=0;i<m;++i)
{
temp.id=i+1;
temp.db=(i+1)*10;
vt.push_back(temp); //初始化向量
}
}
int main()
{
ST tmp;
vector<ST> vec;
Origin(5,vec);
int size=vec.size();
cout<<"size is "<<size<<endl;
while(!vec.empty())
{
tmp=vec.back();//输出尾部的元素
cout<<"id "<<tmp.id<<"db "<<tmp.db<<endl;
vec.pop_back(); //弹出末尾元素
}
return 0;
}
*/
/*
#include<iostream>
#include<vector>
using namespace std;
struct ST //定义结构体类型
{
int id;
double db;
};
void Iter_for(vector<ST> &vt) //用迭代器遍历vector向量容器
{
ST temp;
vector<ST>::iterator iter;
for(iter=vt.begin();iter!=vt.end();iter++)
{
temp=*iter;
cout<<"id: "<<temp.id<<"db: "<<temp.db<<endl;
}
}
void at_for(vector<ST> &vt) //用at()函数遍历vector向量容器
{
ST temp;
int i=0;
int m=vt.size();
for(i=0;i<m;++i)
{
temp=vt.at(i);
cout<<"id: "<<temp.id<<"db: "<<temp.db<<endl;
}
}
void Origin(int num,vector<ST>&vt) //定义初始化函数
{
int m=num;
ST temp;
for(int i=0;i<m;++i)
{
temp.id=i+1;
temp.db=(i+1)*10;
vt.push_back(temp); //初始化向量
}
}
int main()
{
ST tmp;
vector<ST> vec;
Origin(5,vec);
int size=vec.size();
cout<<"size is "<<size<<endl;
cout<<"Iterator output "<<endl;
Iter_for(vec);
cout<<"at() output "<<endl;
at_for(vec);
cout<<"empty() usage:"<<endl;
while(!vec.empty())
{
tmp=vec.back();//输出末尾元素
cout<<"id "<<tmp.id<<"db "<<tmp.db<<endl;
vec.pop_back(); //弹出末尾元素
}
return 0;
}
*/
/*
//函数模板的使用
//for_each() count_if()函数的使用
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct Student
{
int id;
double score;
};
template<class T>
void Original(T &vt) //初始化
{
Student temp;
temp.id=1;
temp.score=90;
vt.push_back(temp);
temp.id=2;
temp.score=95;
vt.push_back(temp);
temp.id=3;
temp.score=98;
vt.push_back(temp);
temp.id=4;
temp.score=97;
vt.push_back(temp);
temp.id=5;
temp.score=95;
vt.push_back(temp);
temp.id=6;
temp.score=90;
vt.push_back(temp);
}
void out(Student &stu)
{
cout<<" stu--id: "<<stu.id<<" "<<"stu--score: "<<stu.score<<endl;
}
bool greater95(Student &stu)
{
if(stu.score>=95.0)
{
return 1;
}
return 0;
}
int main()
{
vector<Student> vec;
vector<Student>::iterator it;
int countV=0;
Original(vec);
for_each(vec.begin(),vec.end(),out);
countV=count_if(vec.begin(),vec.end(),greater95);
cout<<"大于95分的人数: "<<countV<<endl;
return 0;
}
*/
/*
//find() find_if()
#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
void print(const int &temp)
{
cout<<temp<<endl;
}
int main()
{
const int
arr_size=8;
int arr[arr_size]={0,1,2,3,4,5,6,7};
vector<int> vec;
vector<int>::iterator location_index;
for(int i=0;i<8;++i)
{
vec.push_back(arr[i]);
}
for_each(vec.begin(),vec.end(),print);
location_index = find(vec.begin(),vec.end(),2);
cout<<"2的下标是: "<<((location_index)-vec.begin())<<endl;
location_index = find_if(vec.begin(),vec.end(),bind2nd(greater<int>(),5));
cout<<"第一个大于5的数字下标为: "<<(location_index-vec.begin())<<endl;
return 0;
}
*/
/*
//排序:sort()的使用
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
class student
{
public:
student(const string &a,double b):name(a),score(b){}
string name;
double score;
bool operator < (const student &m)const//小于的运算符重载函数
{
return score < m.score;
}
};
bool name_sort_less(const student &m,const student &n)
{
return m.name<n.name;
}
bool name_sort_greater(const student &m,const student &n)
{
return m.name>n.name;
}
bool score_sort_greater(const student &m,const student &n)
{
return m.score>n.score;
}
void print(student &s)
{
cout<<s.name<<"\t"<<s.score<<endl;
}
void Original(vector<student> &v)
{
student st1("Tom",74);
v.push_back(st1);
st1.name="Yang";
st1.score=90;
v.push_back(st1);
st1.name="Lijian";
st1.score=98;
v.push_back(st1);
st1.name="Eason";
st1.score=87;
v.push_back(st1);
st1.name="Kkw";
st1.score=78;
v.push_back(st1);
st1.name="Jony";
st1.score=75;
v.push_back(st1);
}
int main()
{
vector<student> vec;
Original(vec);
cout<<"********************排序前*****************"<<endl;
for_each(vec.begin(),vec.end(),print);
sort(vec.begin(),vec.end()); //默认按照数字从小到大排序
cout<<"********************排序后*****************"<<endl;
for_each(vec.begin(),vec.end(),print);
sort(vec.begin(),vec.end(),name_sort_less);
cout<<"*************按name从小到大排序*************"<<endl;
for_each(vec.begin(),vec.end(),print);
sort(vec.begin(),vec.end(),name_sort_greater);
cout<<"*************按name从大到小排序*************"<<endl;
for_each(vec.begin(),vec.end(),print);
sort(vec.begin(),vec.end(),score_sort_greater);
cout<<"*************按score从大到小排序*************"<<endl;
for_each(vec.begin(),vec.end(),print);
return 0;
}
*/
/*
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void OutToScreen(int &Ele)
{
cout<<Ele<<",";
}
*/
/*
//插入元素:push_back() 尾插 insert() 向任意位置插入
int main()
{
vector<int> vec;
for(int i=0;i<10;++i)
{
vec.push_back(i);
}
vec.insert(vec.begin(),-1);
for_each(vec.begin(),vec.end(),OutToScreen);
cout<<endl;
vec.insert(vec.end(),-2);
for_each(vec.begin(),vec.end(),OutToScreen);
cout<<endl;
vector<int> vt;
vt.push_back(-80);
vt.push_back(-90);
vt.push_back(-70);
vt.push_back(-50);
vec.insert(vec.end(),vt.begin(),vt.end());
for_each(vec.begin(),vec.end(),OutToScreen);
cout<<endl;
vec.insert(vec.begin(),3,0);
for_each(vec.begin(),vec.end(),OutToScreen);
cout<<endl;
}
*/
/*
//删除 pop_back() 删除末尾元素
// clear() 删除全部元素
// erase() 删除任意位置元素
int main()
{
vector<int> vec;
for(int i=0;i<10;++i)
{
vec.push_back(i);
}
for_each(vec.begin(),vec.end(),OutToScreen);
cout<<endl;
cout<<"************从尾删除**********************"<<endl;
while(!vec.empty())
{
vec.pop_back(); //弹出vector末尾元素
for_each(vec.begin(),vec.end(),OutToScreen);
cout<<endl;
}
vec.clear();//清空vector型容器
for(int j=0;j<10;++j)
{
vec.push_back(j);
}
for_each(vec.begin(),vec.end(),OutToScreen);
cout<<endl;
cout<<"***********从头删除**************"<<endl;
while(!vec.empty())
{
vec.erase(vec.begin()); //删除容器中第一个元素
for_each(vec.begin(),vec.end(),OutToScreen);
cout<<endl;
}
}
*/
/*
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<functional>
using namespace std;
struct ST
{
int id;
int score;
};
void print( ST & tmp)
{
cout<<"id"<<tmp.id<<" "<<"score"<<tmp.score<<endl;
}
int main()
{
vector<ST> vec;
ST stu;
stu.id=1;
stu.score=80;
vec.push_back(stu);
stu.id=2;
stu.score=87;
vec.push_back(stu);
stu.id=3;
stu.score=70;
vec.push_back(stu);
for_each(vec.begin(),vec.end(),print);
cout<<"--------------pop_back() 删除-----------------"<<endl;
vec.pop_back();
for_each(vec.begin(),vec.end(),print);
return 0;
}
*/
#if 0
//vector类模板提供了成员swap()函数,以实现两个vector型容器之间的元素互换
//如果两个参与交换的vector类型相同,交换会瞬间完成;
//如果两个参与交换的vector对象中的元素类型不同,在实现对象交换的过程中,操作将非常复杂
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void OutPut(int &Ele)
{
cout<<Ele<<" ";
}
int main()
{
vector<int> c1,c2;
for(int i=0;i<10;++i)
{
c1.push_back(i);
//c2.push_back(i*10);
}
for(int i=0;i<5;++i)
{
c2.push_back(i*10);
}
cout<<"c1 交换前:"<<endl;
for_each(c1.begin(),c1.end(),OutPut);
cout<<endl;
cout<<"c2 交换前:"<<endl;
for_each(c2.begin(),c2.end(),OutPut);
cout<<endl;
cout<<"-----------swap--------------"<<endl;
c1.swap(c2);
cout<<"c1 交换后:"<<endl;
for_each(c1.begin(),c1.end(),OutPut);
cout<<endl;
cout<<"c1 交换后:"<<endl;
for_each(c2.begin(),c2.end(),OutPut);
cout<<endl;
return 0;
}
#endif
#if 0
//vector<bool>类 vector<bool>只占用一个字节存储单个元素
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void Iter_for(vector<bool> &vec)
{
vector<bool>::iterator it;
for(it=vec.begin();it!=vec.end();++it)
{
cout<<*it<<" ";
}
cout<<endl;
}
int main()
{
int arr[]={1,0,1,0,0,0,1,1,1};
vector<bool> vt;
int i=0;
for(i=0;i<9;++i)
{
vt.push_back(bool (arr[i]));
}
Iter_for(vt);
vt[5]=bool (1);
Iter_for(vt);
return 0;
}
#endif
10-30
5253
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
04-03
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交