ACM Trick点&&常用操作记录(持续更新)(语言&&函数)

语言&&函数

memset()是以字节 为单位,初始化内存块

memsetint型内存块
00
-1-1 (‭FFFFFFFFFFFFFFFF‬,64位)
0x3f、0x3f3f、0x3f3f3f……1061109567 (3F3F3F3F)
-0x3f、-0x3f3f、-0x3f3f3f……-1044266559
注意: 116843009(‭1010101‬)HEX


运算符重载

struct Edge{
    int from,to,dist;
    Edge() {}
    Edge(int x,int y,int w):from(x),to(y),dist(w){}
    bool operator < (const Edge & e) const {//后面的const必须加上
        return (dist<e.dist);
    }

    //一种写法
    friend Edge operator + (const Edge &a,const Edge &b){
        return Edge(a.from,b.to,a.dist+b.dist);
    }

    //另一种写法
    Edge operator + (const Edge & a){
        Edge res;
        //res.from=this->from;
        res.from=from;

        res.to=a.to;

        //res.dist=this->dist+a.dist;
        res.dist=dist+a.dist;
        return res;
    }
};

Edge edges[maxn];//这里有Edge型的变量edges  前面Edge结构体必须加上Edge() {}



运算符的优先级

注意 +, + , − > >> >> << << <script type="math/tex" id="MathJax-Element-3"><<</script> > & > ^ > | > && >|| > ?:



整数、浮点数转字符串

经测试,会在末尾加’\0’
img

sprintf()函数打印和格式控制到一个char中,还可以连接多个字符串,功能比较强大
但是其不支持转二进制 如果想把数字转为二进制串 可以使用itoa的参数 但貌似该函数被取消了。。
所以还是手写吧


字符串转整数、浮点数



string重载的+=

string& operator+= (const string& str);
string& operator+= (const char* s);
string& operator+= (char c);    
string& operator+= (initializer_list<char> il);



reverse函数的使用

#include<bits/stdc++.h>
using namespace std;

char str[10000010];

int main()
{
    srand(time(0));
    string s="";
    for(int i=0;i<1e7;++i){
        s+='a'+rand()%26;
    }
    strcpy(str,s.c_str());

    double a=clock();
    reverse(s.begin(),s.end());
    cout<<s<<endl;

    double b=clock();
    cout<<b-a<<endl;
    reverse(str,str+strlen(str));
    cout<<str<<endl;

    double c=clock();
    cout<<c-b<<endl;
    return 0;
}

1e7的串大概需要100ms逆置 char[]比string 稍快(大概1.5倍)



判断一个数是否是完全平方数(立方,四次方同理)

ll is_sqrt(ll x)
{
    ll t=sqrt(1.0*x)+0.5;
    return t*t==x ? t :-1 ;
}





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值