• c++ 常用标准库


    vector:

    在vc6中,如果要镶嵌使用vector, 如vector<vector<int> >, 后面的两个> 应该用,空格隔开, 否则被编译器认为是移位符

    string::npos 的值为-1或者4294967295

    string str;

    str.find(str2) 返回str2第一次在str中出现的位置, 如果不存在则返回string::npos

    str.find(str2, pos)  从str的pos号开始匹配,返回值和上面一样

    str.replace(pos, len, str2) 从str的pos位开始,长度为len的内容替换为str2

    str.replace(it, it2, str) 把迭代器[it, it2)范围的子串替换为石头人

    queue

    在调用front()或者pop()函数的时候,先判断queue是否为空, 否者导致错误

    如果要基础类型的数据升序排列,可以这样声明 priority_queue<int, vector<int>, greater<int> >; 注意最后两个符号间的空格

    如果要用自己的定义的类型就需要在结构体中定义"<"符号, 只需要定义这个符号, 否者会出错, 至于是升序排列,还是降序排列,看你自己重写的<是怎么样的了

    但是这个和cmp优点不一样,这里返回a.x<b.x得到的是降序排列的而不是升序排列的, 即作用和排序中的cmp是相反的; 

    此外,当数据量的比较大的时候, 简易形式参数引用传递, 减少数据的复制

    1 struct node{
    2     int x, y;
    3     friend operator < (node a, node b){
    4         if(a.x!=b.x) return a.x<b.x;
    5         return a.y<b.y;
    6     }
    7 };

    浮点数取绝对值要用fabs();  否则浮点数的小数部分会被截掉;

    reverse(it1, it2) 颠倒[it1, it2)之间的内容, 好像stl中的类似的函数都是左闭又开的哈

    lower_bound(first, last, key)  适用于递增序列, 在[first, last)返回第一个大于或者等于key的位置,

    upper_bounder(first, last, key) 返回第一个大于key的值

    如果是数组返回位置的指针, 如果是迭代器,返回位置的迭代器

    有疑惑或者更好的解决方法的朋友,可以联系我,大家一起探讨。qq:1546431565
  • 相关阅读:
    2013上半年学习目录
    《linux c编程指南》学习手记4
    Oracle二三事之 Oracle SPARC SuperCluster的九大技术优势
    《linux c编程指南》学习手记5
    Oracle二三事之 数据迁移注意事项
    《linux c编程指南》学习手记3
    在IIS中实现JSP
    为什么匿名内部类参数必须为final类型
    sql server和mysql变量赋值的区别 以及 MySql Declare
    android上传文件到服务器
  • 原文地址:https://www.cnblogs.com/mr-stn/p/9226446.html
Copyright © 2020-2023  润新知