类对象储存在vector中的储存形式有关问题
类对象储存在vector中的储存形式问题现在有一个类,需要使用vector储存该类的若干实例。例如如下代码:C/C++
类对象储存在vector中的储存形式问题
现在有一个类,需要使用vector储存该类的若干实例。例如如下代码:
C/C++ codeclass A{ vector<int> member; //construction function;}//use thisvector<A> Avector;while (condition) { A newA(); Avector.push_back(newA);}//or thisvector<A*> Aptrvector;while (condition) { A* newAptr = new A(); Aptrvector.push_back(newAptr);}
其中使用两种方式,一种是直接用vector储存新建的类的实例,另一种是储存类的实例的指针,通过new来分配类的空间。
类的实例需要在程序执行整个过程中调用。
请问以上两种方式,哪种实现更好一些?
[解决办法]第一种最好实现自定义拷贝构造,否则深浅拷贝的问题可能是潜在bug
[解决办法]如果是个巨类的话,可以采用第二种
[解决办法]性能可接受的情况下,存储对象而不是指针,避免潜在的内存问题
[解决办法]删除的代价很大, 谨慎.