我在复制 ptr_vector 时遇到了困难。
我正在使用一个具有 Act 对象向量的解决方案类。在每个 Act 类中,我有一个 ptr_vector 链接回其他 Act 对象。我从 txt 文件中读取了一些数据,并将其存储在 Sol 对象中。现在如何将这个 Sol 对象复制到其他 Sol 对象(例如在向量中)。我尝试使用 release 和 clone 在 sol 类中编写自己的复制构造函数,但似乎 ptr_vector 不能如此容易地复制。
提前致谢。
class Sol
{
public:
//data
int obj;
vector<Act*> deficit_act;
int deadline;
int nbr_res;
int nbr_act;
std::vector<Act> act;
std::vector<Res> res;
}
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/ptr_container/clone_allocator.hpp>
class Act
{
public:
//static
int id;
int es;//earliest start
int ls;//latest start
int range;//difference between ls and es
int dur;//duration of the activity
std::vector<int> dem;//demand requirement for every resource: needs to be initiliased
//predecessors and successors
int nrpr;
int nrsu;
boost::ptr_vector<Act> pr;
boost::ptr_vector<Act> su;
//dynamic
int start;
int end;
Act():id(-1),es(0),ls(0),range(0),dur(0),nrpr(0),nrsu(0),start(-1),end(-1){}
~Act(){}
};
//inside the main.cpp
Sol emptysol;
read_instance(emptysol,instance_nr,"J301_1");
emptysol.calc_parameters();
vector<Sol> sol;
sol.reserve(pop_size);
for(int ind=0;ind<pop_size;++ind)
{
sol.push_back(Sol(emptysol));// this throws a stack overflow error
}