STL学习过程中遇到的一些小问题的解决方法

原文章:

STL学习过程中遇到的一些小问题的解决方法 - 知乎

此文章为作者本人搬运至该网站。

一、cin和cout的解锁:

ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); 的作用和注意事项-优快云博客

用于提升cin与cout的运行速度与效率。

因为c++为了与c语言进行兼容,有一定的性能损失,cin与cout的速度就远不及scanf和printf了,不过只要使用这行代码:

ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);     //放在main函数里面的第一行位置

就可以关闭这种兼容,提升速度,目的是避免可能出现的运行超时。

如:

#include<bits/stdc++.h>
using namespace std;
 
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
 
    return 0;
}

不过在使用它之后要注意几点:

1.不能再把cin、cout与scanf、printf、getchar、cin.getline()一同使用了。

2.不能再用 cout<<endl 了,而应该改用 cout << '\n'。


二、用signed main代替int main:

【C++疑问】signed main 和 int main 的区别?_signed int main-优快云博客

看上面这个文章即可。

一句话总结:当#define int long long时,int main不能成立了,于是就换成signed main。


三、根据数组结构体里面的某个元素对所有结构体进行排序:

间隔这么长时间,我才发现我还有个sort的问题没解决:

那就是sort不能直接对存放结构体的数组进行排序啊!

原因毕竟很简单,结构体内部有多个元素,如果不指定是哪个元素,那么又如何排序呢?

因此需要如下代码:

struct node {
    elemtype x;
}node[N];

//1.使用函数自定义排序,定义比较函数
bool cmp(node a, node b) {
    //按结构体里面的x值降序排列
    return a.x > b.x;
}
sort(node, node + n, cmp); // 只能接受 以函数为形式的自定义排序规则,无法接受以结构体为形式的自定义排序规则

// 2. 或者使用匿名函数自定义排序规则
sort(node, node + n, [](node a, node b) {
    return a.x > b.x;
});

这个我建议用上面哪个,毕竟好记嘛。

在这里面,a.x就成为了结构体中的某个元素。

就通过这个元素对数组中所有的结构体进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值