算法竞赛中c++使用优势及劣势

  由于入行没多久,所以编写不太完善,希望大家能帮忙补充。


  对于优势方面,我认为有以下几点:
1.有着丰富的函数库。
2.可以使用c++标准模板库(stl),极大的方便了操作。
3.操作相对于其他语言比较方便。


  对于劣势方面,我认为有以下几点:
1.缺少大数的应用。
2.输入输出速度弱于c,同时一些库函数的耗时也高于自己写的函数。
3.对于输出的结果的格式控制较麻烦。


  对于优势介绍
  1:c++有着极其丰富的函数库,造就了其丰富的功能,其中<algorithm>文件中,我们可以直接调用库函数max,min进行比较,直接调用sort进行排序,直接调用swap交换,还有lower_found等等,希望大家自己搜索了解。
  2:stl的代码从广义上讲分为三类,algorithm(算法)、contain(容器)、iterator(迭代器)。几乎所有的代码都采用了模板类和模板函数的方式。极大的方便了竞赛中的使用,这个我会单独弄一个专题,以后会贴上链接,希望大家也可以百度了解.
3:简单的输入(cin)输出(cout)不管什么类型可以直接接受,字符串也可以直接用大于小于比较,也可以a += b直接向a字符串中添加字符或者字符串b;(不过字符串需要用定义成string类型),for循环中变量也可以直接内部定义(for(int i = 0; i < n; i++)) 等,同时携带各种库函数,以及stl,极大的方便了代码的操作。
  

对于劣势介绍

      1:意思很明显,就是没有办法直接操作大数,借用数组明显比较麻烦,所以个人建议遇见大数问题直接用java大数,以后会贴上java大数链接。
      2:输入输出速度比较慢,大约比scanf,printf慢了十倍!(cin与stdin总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输 出顺序错乱。正因为这个兼容性的特性,导致cin有许多额外的开销,如何禁用这个特性呢?只需一个语句 std::ios::sync_with_stdio(false);,这样就可以取消cin于stdin的同步了,此时的cin就与scanf差不多 了。)所以建议在c++中也使用scanf,printf。同时类似于max之类的库函数会比自己写的慢一点,有些时候也会导致超时。当然,这不是不能使用,计算好时间复杂度,如果时间足够,自己随便使用。
      3:对于输出格式控制方面,当然printf更优秀啦。

 

 

#include<algorithm>
#include<string>
#include<iostream>

using namespace std;

int main()
{
    int x = 1, y = 2;
    cout << max(x, y) << endl;  //输出两数中最大的数
    cout << min(x, y) << endl;  //输出两数中最小的数
    swap(x, y);                 //交换x和y的值
    cout << x << endl;
    int N[5] = {1, 0, 7, 4, 5};
    sort(N, N + 5);             //排序,默认从小到大,用cmp函数可以调整状态
    for(int i = 0; i < 5; i++)
    {
        cout << N[i] << ' ';
    }
    cout << endl;
    string a = "123", b = "456";
    char c = '7';
    a += b;                     //字符串加上字符串
    cout << a << endl;
    a += c;                     //字符串加上字符
    cout << a << endl;
    return 0;
}

 

 

 

 

 

这是一些函数应用及字符串简单操作,微微展示一下,其实远远不止这些。希望大家多查阅资料,作为初学者,也希望多注意代码风格。
 

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值