【发布时间】:2015-06-16 17:24:13
【问题描述】:
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <vector>
#include <conio.h>
using namespace std;
int main()
{
cout << "Enter the numbers: " << endl << "Write eof() when you want to end" << endl;
int x;
vector<int> num;
//enter numbers till eof() is encountered
while (cin >> x) {
num.push_back(x);
}
//sort the vector
sort(num.begin(), num.end());
//get size of the vector
typedef vector<double>::size_type vec_sz;
vec_sz size = num.size();
//loop to print 4 numbers according to size
for (auto i = 0; i < size; i++)
{
cout << num[i];
if (i == size - 1)
break;
i++;
cout << " " << num[i];
if (i == size - 1)
break;
i++;
cout << " " << num[i];
if (i == size - 1)
break;
i++;
cout << " " << num[i];
if (i == size - 1)
break;
cout << endl;
//<< " " << num[i + 1] << " " << num[i + 2] << " " << num[i + 3] <<
}
_getch();
return 0;
}
我想一次打印一个整数向量的 4 个数字。当我尝试通过在 for 循环中执行 i+=4 来打印向量时,编译器抱怨说 'i' 超出了向量的大小并且程序崩溃了。 现在,我所拥有的是工作,但我发现它现在的实现方式真的很无聊,必须有一个很好的方法来做到这一点。
所以我的问题是 -
1) 我怎样才能更多地整理代码?
2) 使用循环时,编译器如何访问存储向量内容的内存?
3) 如何实现错误检查,使循环变量不访问超出向量大小的元素?
【问题讨论】:
标签: c++ loops memory vector compiler-optimization