[C++] 笔记

前端之家收集整理的这篇文章主要介绍了[C++] 笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

函数
----------------------------*/
void ToUpperString(string &str)  
{  
    transform(str.begin(),str.end(),str.begin(),(int (*)(int))toupper);  
}  
void ToLowerString(string &str)  
{  
    transform(str.begin(),(int (*)(int))tolower);  
}
/*---------------------------------------------
   new 异常处理&动态二维数组&delete 释放
---------------------------------------------*/
char (*c)[5];                                 //如果列数已知
try{c=new char[n][5];}
catch(bad_alloc)                           //定义在exception中的异常类型
{
    cerr <<"out of memory"<
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&amp;1){
        res*=x;
    }
    x*=x;
    y>>=1;
}
return res; 

}
int main(){
int res = qpow(2,7);
printf("%d\n",res);
}
//----------------------------------------------------

猜你在找的程序笔记相关文章