【问题标题】:Declaring and using custom-class vectors声明和使用自定义类向量
【发布时间】:2017-10-26 08:55:08
【问题描述】:

我和我的伙伴刚刚遇到了一个我们还无法解决的问题。

我们有两个班级,solutiongeneration

solution 有很多属性,generation 有一个vector<solution> pool 等属性。

生成类有一个generatePool函数:

void generation::generatePool(int initsize){
  for(int i = 0; i < initsize; i++){
    printf("%d\n", i);
    pool.push_back(get_randomized_solution(args));
  }
}

其中get_randomized_solution 本身返回一个解决方案。问题是,程序编译但在push_backline 处崩溃(分段错误)

我们已经在pool 向量上尝试了resizereserve,我们也尝试过使用指针...但它仍然崩溃,现在谷歌(和SO)似乎已经没有想法来帮助我们.我们还重新定义了solution&amp; solution::operator=(const solution&amp;)solution::solution()(没有参数)构造函数,它基本上返回一个空的solution。您认为问题出在哪里?

编辑:

这是get_randomized_solution 方法:

solution get_randomized_solution(int size, int rcap, int rcom, bool randomized){
  solution sol = solution(size, rcap, rcom);

  vector< pair<int,int> > cibles;
  for(int i = 0; i < size; i++){
    for(int j = (i==0) ? 1 : 0; j < size; j++){
      cibles.push_back(make_pair(i, j));
    }
  }

  srand(rand());
  if(randomized) random_shuffle(cibles.begin(), cibles.end());

  for(int k = 0; k < cibles.size(); k++){
    if(sol.removeCaptor(cibles[k])){
      if(!sol.realisable()){
        sol.addCaptor(cibles[k]);
      }
    }
  }
  return sol;
}

更完整的代码:https://codeshare.io/2jLnzB

【问题讨论】:

标签: c++ class object vector


【解决方案1】:

那确实是 get_random_solution,其中有一个 size = size 行导致了这个错误。真的很抱歉没有用的帖子。

【讨论】:

    猜你喜欢
    • 2013-05-28
    • 2011-04-30
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多