数字相比较的模板
using namespace std;
template//声明一个空类型,X.一个抽象的数据类型。
X Max(X a,X b)//整形、浮点型都可以。通过实参类型可以得到真正的函数。
{
return (a(x1,x2)<可以省略
}
类模板
using namespace std;
template
class Test
{
X m_t1;//虚拟类型
Y m_t2;
public:
Test(X t1,Y t2)
{
m_t1=t1;
m_t2=t2;
}
void show()
{
cout<<"T1 ="< t(10,'s');//这里的<>不能省略
t.show();
}
类模板的升级:类外函数的使用
template
class Test
{
X m_t1;
Y m_t2;
public:
Test(X t1,Y t2)
{
m_t1=t1;
m_t2=t2;
}
void show()
{
cout<<"T1 ="<
void Test :: print()//这个是和Test的相关的函数,这里的不能缺少
{
cout<<"T1 ="< t(10,'s');//这里的<>不能省略
t.show();
t.print();
}
迭代器
关键字iterator,vector
using namespace std;
vector v;//定义一个v,插入int型变量
int main()
{
/* for(int i=0;i<11;i++)
{
v.push_back(i);//尾插,新建立类似于链表的东西
}*/
int elem;
while(cin>>elem)
v.push_back(elem);
for(int j=0;j::iterator it=v.begin();it,it是指针,begin和end是迭代器的首地址和尾地址
{
cout<<*it<<"\t";//这个\t还必须加生“”
}
cout<::reverse_iterator it=v.rbegin();it
指针和迭代器关于const的应用
using namespace std;
int *p1; iterator i1;
const int *p2; const_iterator i2;//指向的内容不能变
int const *p3; const iterator i3;//指针不能变
const int *const p4; const const_iterator i4;//都不能变
vector的一些使用案例
using namespace std;
void show(vector vi)
{
vector::iterator it;
it=vi.begin();
while(it!=vi.end())
cout<<*it++<<" ";
cout< vi(3,90);//插入3个90
show(vi);
int a[5]={3,4,5,6,7};
vi.insert(vi.begin(),a,a+5);//头插,五个数
show(vi);
vi.push_back(100);//尾插
show(vi);
cout<<"size:"<
list 的应用
#include
int main()
{
int cpp[5]={3,6,1,7,5};
int java[8]={1,2,3,4,5,6,7,8};
int Unix[4]={5,2,3,11};
list li;//list是容器
li.insert(li.begin(),cpp,cpp+5);
li.insert(li.begin(),java,java+8);
li.insert(li.begin(),Unix,Unix+4);
li.sort();//排序
li.unique();//去重,要和排序一起使用
li.reverse();//翻转,就是原本是从小到大排序,后来就从大到小
list::iterator //iterator是list里面的一个类,是迭代器
it=li.begin();
while(it!=li.end())
cout<<*it++<<' ';
cout<
#include
int main()
{
list l1;
int a[5]={3,4,5,6,7};
list l2(a,a+5);
cout<<"l1.size():"<::iterator it;//创建一个迭代器,它的名字叫it
for(it=l2.begin();it!=l2.end();it++)
cout<<*it<<' ';
it=l2.begin();
it++;//it指向第二个
l2.erase(it);删除第二个
l2.insert(l2.begin(),100);//头插
l2.insert(l2.end(),200);//尾插
for(it=l2.begin();it!=l2.end();it++)
cout<<*it<<' ';
cout<
map
int main()
{
mapmis;
mis.insert(make_pair(62,"东方不怕"));//创建对象
mis.insert(make_pair(32,"岳不群"));
mis.insert(make_pair(36,"林平之"));
mis[20]="劳德罗";//这里的20不是下标,就是和上面的int型一样
map::iterator it;
it = mis.begin();
while(it!=mis.end())
{
cout<first<<":"<second<
用vector删除指定的元素
using namespace std;
#include
#include
const在类中的使用
class Test
{
int m_t;
public:
Test(){}//这个还不能省略
void lianxi()const //const加这个位置表示成员变量不能改变
{
cout<<"alex is a cool boy"<