一、
templae<typename T>
可以根据你所需要的类型就行匹配。
例如:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
template <typename T>
T mmax(T a,T b)
{
return a>b?a:b;
}
int main()
{
int a,b;
cin>>a>>b;
cout<<mmax(a,b)<<endl;
char c,d;
cin>>c>>d;
cout<<mmax(c,d)<<endl;
double f,g;
cin>>f>>g;
cout<<mmax(f,g)<<endl;
}
二、
1.vector<int> edge1(maxn)
,定义了一个名为edge1的向量,且此向量有maxn个元素,元素类型为int类型。
2.vector<vector<int>> edge2(maxn)
,定义了一个名为edge2的向量,此向量有maxn个元素,元素类型为vector 类型。
3.一般情况:vector<元素类型> 向量名(向量长度).
把上面的两个定义分别来对应3中的名字就很清楚了。
在 1 中:元素类型为 “int 类型”、向量名为“edge”、向量长度为“maxn”
在 2 中:元素类型为 "vector类型”、向量名为“edge2”、向量长度为”maxn“
vector< vector<int> > v(m, vector<int>(n) );
是什么意思?
定义了一个vector容器,元素类型为vector<int>
,初始化为包含m个vector<int>
对象,
每个对象都是一个新创立的vector<int>
对象的拷贝,而这个新创立的vector<int>
对象被初始化为包含n个0。
从结果上看,类似于创建了一个m×n的二维数组,而且可以通过v[i][j]的方式来访问元素(vector支持下标访问元素)。
vector<vector<int>>b(a[0].size(),vector<int>(a.size()))
什么意思?
vector<vector<int>>b
实例化一个名为b的vector。这个vector当中存得是一系列的vector<int>
。
实例化的同时,在b里面放入一些默认值。总共放入a[0].size()个默认值,默认值的内容是vector<int>(a.size())
,即一个长度为a.size(),里面值都填充为0的vector<int>
。
可以把b想象成一个表,它有a[0].size()行,其中每行又有a.size()列。新建的表里面这a[0].size()行*a.size()列全部填成0。
三、
struct node
{
int s,e,id;
bool operator < (const node &a)const //优先级队列排序条件。
{
return e>a.e; //添加的元素小于队头元素时返回true。即从小到大有序存储。
}
};
priority_queue <node> q;
在向队列中添加元素时,会按照约束条件有序存储。