priority_queue用法
#include
std::priority_queue<sometype,std::vector,less>
默认状态,最大堆,sometype为基本类型(int,double,string)或实现了<和>重载的自定义类
std::priority_queue<sometype,greater>
最小堆,sometype为基本类型(int,string)或实现了<和>重载的自定义类
Note:对于无法重载比较运算符的类,例最小优先队列:
struct node{
int key;
...
};
struct cmp{
bool operator()(node a,node b){
return a.key > b.key;//这里的>可以这样记是在队列中前后两个元素,若函数返回true,则需要交换位置。
}
};
int main(){
priority_queue<node,vector,cmp> q;
}
string 字母转小写
#include
#include
std::string data = "Abc";
std::transform(data.begin(),data.end(),data.begin(),::tolower);
整数转16位二进制
string dtob(const string d){
int num;
string res;
stringstream sstem;
sstem<>num;
sstem.clear();
sstem.str("");
for(int i=15;i>=0;i--){
sstem<<((num>>i)&1);
}
sstem>>res;
return res;
}
C++继承权限 第一:private,public,protected 访问标号的访问范围。
private:只能由1.该类中的函数、2.其友元函数访问。 不能被任何其他访问,该类的对象也不能访问。
protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。 但不能被该类的对象访问。
public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。
注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。
第二:类的继承后方法属性变化。 private 属性不能够被继承。 使用private继承, 父类的protected和public属性在子类中变为private; 使用protected继承,父类的protected和public属性在子类中变为protected; 使用public继承, 父类的protected和public属性不发生改变;
Other
bool make2dArray(T** &x,int numberOfRows,int numberOfColumns)
{
try{
x= new T*[numberOfRows]; //创建行指针
for(int i=0;i<numberOfRows,++i)//为每一行分配空间
{
x[i]=new int[numberOfColumns];
}
return true;
}
catch (bad_alloc) {return false;}
}
//----------------------------行列未知,更好写法--------------------------
template
void make2dArray(T* &x,int numberOfRows,int numberOfColumns)
{
x=new T [numberOfRows];
for(int i=0;i<numberOfRows;++i)
x[i]=new int[numberOfColumns];
}
try{make2dArray(x,r,c);} //在适当的地方抛出异常
catch(bad_alloc)
{
cerr<<"error"<<endl;
exit(1);
}
//---------------------------------delete--------------------------------
template
void delete2dArray(T* &x,int numberOfRows)
{
for(int i=0;i<=numberOfRows;++i) //删除行数组空间
delete [] x[i];
delete [] x; //删除行指针
x=NULL;
}
/-----------------------------
快速幂非递归
----------------------------*/
include
using namespace std;
int qpow(int x,int y){
int res =1;
while(y>0){
if(y&1){
res*=x;
}
x*=x;
y>>=1;
}
return res;
}
int main(){
int res = qpow(2,7);
printf("%dn",res);
}
//----------------------------------------------------
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|