美文网首页
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与拷贝构造函数

    1:所有的容器都是存的副本,因此stl容器中的元素都必须能够被拷贝。 2:vector a pushback时候其...

  • C++vector日记

    STL标准容器vector,动态数组。如果类A只有带参构造函数如A(int n),这时A *arr=new A[]...

  • C++ STL容器与对象的拷贝

    STL中有很多容器,当把某个类的实例存入容器时,其实是调用了相应的拷贝构造函数。对于map这样的关系容器,如果ke...

  • C++ STL 之 vectot(三)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 容器增加元素 vector 容器增加...

  • C++ STL 之 vectot(四)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 容器删除元素 使用 clear() ...

  • C++ STL 之 vectot(二)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 迭代器使用 与 array 类似,v...

  • STL-容器共通操作

    STL-容器共通操作 以下操作为STL所有容器共有 初始化 每个容器类都提供了一个default构造函数,一个co...

  • C++语言基础(02)

    1.可变参数 2.构造函数、析构函数、拷贝构造函数 构造函数 拷贝构造函数 //浅拷贝(值拷贝)问题 //深拷贝

  • GeekBand C++第五周

    STL 对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。 标准STL顺序容器:vector、deque...

  • c++学习记录7(GeekBand)

    这周的课程将容器讲完了。自己来总结下容器的东西。 参考:STL源码分析 (一)vector容器 vector的数据...

网友评论

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

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