我在实现矢量方面遇到了一些问题。我正在尝试制作的程序如下:获取用户定义的“大小”值并创建该大小的“循环”向量。然后它接收另一个整数变量,表示在从向量中删除项目之前必须发生多少循环迭代。在我的代码中,我试图遍历这个“Person”对象的向量(一个基本类,其唯一的私有数据成员是一个表示位置的整数)。声明此“runProgram”函数的类具有person对象矢量的私有数据成员,然后是表示圆形大小的三个整数,消除前的遍数,以及向量中的项目数。我做了一个while循环来执行这个过程。但是,每次运行此程序时,程序似乎只通过循环一次,然后删除所有内容......或者只是不继续。以下是我的一些代码:
主循环:
enter cod int VectorMyJosephus::runProgram(){
int n = 0;
int m = 0;
cout << "How many people would you like in the circle?" << endl;
cin >> n;
cout << "How many passes would you like ther to be before someone is eliminated?" << endl;
cin >> m;
init(n, m);
vector<Person>::iterator iter;
iter = circ.begin();
int count = 0;
while (circ.size() > 1)
{
//count the current person
count += 1;
iter->print();
//remove every "M" person
if (count == M)
{
iter = circ.erase(iter);
count = 0;
size -= 1;
/*printAll();
system("PAUSE");*/
}
else
{
//contine through the list once someone was removed
++iter;
}
if (iter == circ.end())
{
iter = circ.begin();
}
cout << "The position of the only remaining person is: " << iter->getPosition() << "\n" << endl;
cout << circ.size() << endl;
return 0;
}
}这里
这是我的初始化函数,它应该用person对象填充向量:
void VectorMyJosephus::init(int N, int M)
{
this->setN(N);
this->setM(M);
this->setSize(N);
for (int i = 0; i < N; i++)
{
Person pers;
pers.setPosition(i);
circ.push_back(pers);
}
}
我是初学者,所以非常感谢任何帮助
答案 0 :(得分:0)
你的while循环中有return 0
,这会立即中断循环执行。