美文网首页
2022-04-09 STL容器vector与拷贝构造函数

2022-04-09 STL容器vector与拷贝构造函数

作者: hangzhou吴彦祖 | 来源:发表于2022-04-09 17:33 被阅读0次

    1:所有的容器都是存的副本,因此stl容器中的元素都必须能够被拷贝。

    2:vector  a pushback时候其实调用了myclass的拷贝构造函数将参数b拷贝进去的,数据B在出了a的作用域后将通过析构函数自己释放自己。

    3:拷贝构造函数:自己调用的,如果没有自己定义的时候,则只是简单的把对象每个成员变量的值设置为与原来的对象相等,相当于memcpy,浅拷贝问题。因此要自己定义拷贝构造函数。

    4:vector可以预定一个数量 reserve,提高效率,否则按照0 1 2这样动态搬运。两倍空间搬运  这个时候不光这次新的pushback需要调用拷贝构造,之前旧的也需要在调用一次拷贝构造。

    因此心得就是:容量按照两倍递增,为了提高程序的效率,最好一开始就reverse确定vector的大小,避免动态扩展。

    迭代器问题:vector或者deque这种顺序容器,使用迭代器删除元素后,当前迭代器失效,因此返回的值需要接过来啊 否则在循环删除的时候会有问题。

    vectordata = {1,2,3,4,5,6,7,8,9};

    for(autoiter = data.begin(); iter != data.end();)

    {

    iter = data.erase(iter);

    }

    而map list这种非线性的不影响,因此可以在删除前通过++拿到之后的迭代器 可以这样写

    map<int, int> dataMp = { {1,2},{3,4},{5,6} };

    for (auto iter = dataMp.begin(); iter != dataMp.end();)

    {

            // 两种都可

    dataMp.erase(iter++);

    iter = dataMp.erase(iter);

    }

    相关文章

      网友评论

          本文标题:2022-04-09 STL容器vector与拷贝构造函数

          本文链接:https://www.haomeiwen.com/subject/hmbpsrtx.html