加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

[C++] 笔记

发布时间:2020-12-15 00:39:32 所属栏目:C语言 来源:网络整理
导读:priority_queue用法 #include std::priority_queuesometype,std::vector ,less 默认状态,最大堆,sometype为基本类型(int,double,string)或实现了和重载的自定义类 std::priority_queuesometype,greater 最小堆,sometype为基本类型(int,string)或实现了和

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&amp;1){
        res*=x;
    }
    x*=x;
    y>>=1;
}
return res; 

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读