毫无疑问,你们中的一些人已经看过我最近的帖子,都是关于同一个程序的。我一直遇到问题。重申一下:还在学习,不是很高级,不太了解指针,没有上课,根本不懂OOP概念等。这段代码只是将两个排序的向量fray和sarray合并为一个排序的向量向量。至少,我希望它是这样做的。告诉我:
//int num is to find the size of the original vector and
//build up farray and sarray; not used in the merge process
int num = original.size()
std::vector<int> final;
std::vector<int>::iterator it = farray.begin();
std::vector<int>::iterator iter = sarray.begin();
//farray.size() == (0 thru (num / 2))
//sarray.size() == ((num / 2) thru num)
for (;it != farray.end() && iter != sarray.end();) {
if (*it > *iter) {
final.push_back(*it);
it++;
}
else
{
final.push_back(*iter);
iter++;
}
if (it == farray.end()) {
for (int i = 0; iter < sarray.end(); i++) {
final.push_back(*iter);
}
}
if (iter == sarray.end()) {
for (int i = 0; it < farray.end(); i++) {
final.push_back(*iter);
}
}
}
我重写了我的合并排序函数的合并部分,以便......好吧,让它工作。我实际上对这段代码有几个问题:
- 如果 for 循环在下一次传递时可能会改变它们,那么将我的最后两个 if 语句与 std::vector::iterators it && iter 进行比较是一种好的形式吗?
- iter 的值是否会在此循环的最后一次通过时发生变化并搞砸我的代码?将我的最后一个 if 语句放在 *it 和 *iter 比较之前吗?
- end() 成员函数是否引用了调用它的最后一个值?似乎它可能会以某种方式延伸过去。
编辑:我明天会回复所有回复,所以如果你想听更多,请回来查看。已经过了午夜。晚安。