zoukankan      html  css  js  c++  java
  • C++ stl等常用技巧

    set和multiset

    (set)是不可重集,(multiset)是可重集。插入、查看、查询的复杂度都是(O(log(n)))的。会自动从小到大排序。

    迭代器:(set < int >:: iterator it = ...),对应的数值为(*it)

    (s.erase(it))(删掉迭代器)后,(it)就没了!!

    几种常见的操作:

    (s.size()):返回当前的元素数量

    (s.empty()):判断大小是否为零,等同于(size()==0)效率更高

    (s.begin()/s.end()):返回一个迭代器,指向第一个/最后一个元素

    (s.find(val)):返回一个迭代器,指向元素值为(val)的第一个元素,如果没有返回(end())

    (s.count(val)):返回元素值为(val)的个数

    (s.lowerunderline{}bound(val)/s.upperunderline{}bound(val)):返回一个迭代器,指向元素值 (ge{val}/>val)的第一个元素

    (s.erase(val)):删除与(val)相等的所有元素,返回被移除的元素个数

    (s.erase(pos)):移除迭代器(pos)所指位置元素,无返回值

    (s.insert(val)):插入值(val),返回一个迭代器指向(val)

    (s.insert(pos, val)):插入值(val),返回一个迭代器指向(val)(pos)为搜索起点,提升插入速度

    (s.clear()):移除所有元素,将容器清空

    vector

    (vector)可以理解为一个动态数组。

    注意(push\_back(x))是插入的(x)这个数。

    遍历(vector)可以用迭代器,也可以直接(for (int i = 0; i <a.size(); i ++ ) a[i]...)

    重载运算符

    bool operator < (const node &a, const node &b)
    {
    	return a.x < b.x && a.y < b.y;
    }//重载运算符“<”
    

    lower_bound() & upper_bound()

    (lower\_bound(a + 1, a + n + 1, x) - a)是用来找到一个递增数列中,第一个(ge{x})的数的位置。(upper\_bound())则是(>x)

    注意:(lower\_bound())很容易出错,因为可能会有多个相等的数,而它只会找到第一个位置,可能会漏掉数

  • 相关阅读:
    在java中使用ffmpeg将amr格式的语音转为mp3格式
    keras实现不同形态的模型
    TF版本的Word2Vec和余弦相似度的计算
    TensorFlow中的两种conv2d方法和kernel_initializer
    CNN中的padding
    记一次sqoop同步到mysql
    理解HDFS
    TensorFlow中的优化算法
    使用TensorFlow实现分类
    使用TensorFlow实现回归预测
  • 原文地址:https://www.cnblogs.com/andysj/p/13831857.html
Copyright © 2011-2022 走看看