【发布时间】:2016-03-27 18:00:59
【问题描述】:
我是 C++ 的初学者。我遇到了清理包含向量的结构的问题;
这是我的结构:
namespace std {
struct EvalItem {
unsigned int _c; // client
unsigned int _t; // tour
unsigned int _p; // position
unsigned int _dem;
vector<unsigned int> _deltatScenario; // difference in travel length
EvalItem(const unsigned int & c, const unsigned int & t, const unsigned int & p,
const unsigned int & dem)
:_c(c), _t(t), _p(p),_dem(dem){};
};
现在,在某些函数中我使用这个结构;像这样:
void function1()
{
vector<EvalItem> best;
......
.....
......
while(client.size()>0
{
............
...........
if(best.size()==0)
{
best.clear();
best.push_back(eval);
}else if(this->_problem->better(eval._deltatScenario,best[0]._deltatScenario)){
best.clear();
best.push_back(eval);
}else if(eval._deltatScenario==best[0]._deltatScenario){
best.push_back(eval);
}
}
}
}
在“while”的第一次迭代中它工作,我的 best 具有正确的值,但在第二次迭代中,如果程序 clean 我的结构来放置新值,这不起作用,我有一个空的 best。
我放图片来解释更多这种情况:
第一次迭代: 我有最好的价值观
但是在第二次迭代中,当程序清理我最好的新值时,我最好有这样的空行:
我不知道是什么问题,你能帮帮我吗??!!
【问题讨论】:
-
请不要在标准命名空间中添加用户代码
-
谢谢你的评论,但是为什么?
-
@Mouaici_Med 因为它使您的程序格式错误。
-
@Mouaici_Med 您正在使用调试器,但为什么不单步执行您的程序、查看变量、检查程序流程等?
-
@PaulMcKenzie,我做到了,但是我不知道为什么当我清理“最佳”以放置新值时,我遇到了这个问题,所有变量都可以正常工作,但是当我“最好”时清理它以赋予新价值,我有问题