C++ Primer 读书笔记 - 第十章

    添加时间:2013-5-28 点击量:

    1. map和set中的key是独一的,multimap和multiset中的key可以呈现多次。


    2. Whenever we use an associative container, its keys have not only a type, but also an associated comparsion function.


    3. The value_type is a pair and that we can chagne the value but not the key member of that pair.


    4. 用下标插入元素时,内部操纵是如许的:


        - 找key,找不到


        - 把key-value pair 插入到map中,此中value是其默认初始化值


        - 然后再取出key对应的元素,对value进行赋值


    5. 用函数进行插入元素操纵,若是key已存在,则对应的元素对峙不变


        函数有一个返回值,是一个pair,机关如下,可经由过程bool值来断定是否插入了。



    pair<map<stringint>::iterator, bool> ret = word_count.(make_pair(word, 1));
    
    if (!ret.second)
    ++ret.first->second;


    6. 不要用下标操纵来查找一个元素,一旦这个key不存在的话,它会创建一个key,对应的value为默认初始值。


        用find函数,find函数会返回一个指针,用这个指针对元素进行操纵


    7. map中的erase函数,当key存在时,就删除,返回1,不存在,不做任何事,返回0.



    #include <iostream>
    
    #include
    <map>
    #include
    <string>
    #include
    <utility>
    using namespace std;

    class A
    {
    private:
    int age;
    public:
    A() : age(
    0) { }
    A (
    int a)
    {
    age
    = a;
    }
    int get_age() const
    {
    return age;
    }
    bool operator < (const A &a) const
    {
    return (age < a.age);
    }
    };

    int main()
    {
    map
    <stringint> m;
    m.(make_pair(
    abc1));
    m.(make_pair(
    abc4));//do nothing
    cout << m[abc] << endl;
    cout
    << m.size() << endl;
    cout
    << m.count(abc) << endl;

    A a
    = A(5);
    cout
    << a.get_age() << endl;
    A a1(
    6);
    A a2(
    1);
    A a3(
    2);
    A a4(
    10);
    A a5(
    5);
    map
    <A, int> mapa;
    mapa.(make_pair(a1,
    1));
    mapa.(make_pair(a2,
    2));
    mapa.(make_pair(a3,
    3));
    mapa.(make_pair(a4,
    4));
    mapa.(make_pair(a5,
    5));
    for (map<A, int>::iterator it = mapa.begin(); it != mapa.end(); ++it) {
    cout
    << A.age: << (it->first).get_age() << \t;
    cout
    << value: << it->second << endl;
    }
    return 0;
    }


    8. Just as we cannot change the key part of a map element, the keys in a set are also const.


    9. set, multimap, multiset都没有下标操纵


    10. map.lower_bound(k)


          map.upper_bound(k)


          m.equal_range(k) -> return a pair of iterators. first is equivalent to lower_bound(), second is equivalent to upper_bound()

    无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
    分享到: