代码确实编译但没有输出

时间:2017-02-05 12:32:11

标签: c++

我已经制作了这个代码,它应该构建两个向量,一个是整数,最多是100,另一个是这些整数的平方,并且想要写两列,这样值就会排成两列。程序编译正常,但输出为空,即出现nothinkg但只显示消息“进程返回0(0x0)”。我到底错过了什么?

#include <iostream>
#include <cmath>
#include <iomanip>
#include <vector>
using namespace std;

int main()
{    
    vector<int> numbers;
    typedef vector<int>::size_type vec_sz;
    vec_sz size = numbers.size();

    for (vec_sz i = 0; i != numbers.size(); ++i)
    {
        numbers.push_back(i);
    }

    vector<int> squares;

    for (vec_sz i = 0; i!= squares.size(); i++)
    {
        squares.push_back(i^2);
    }
    for (vec_sz i = 0; i != numbers.size(); ++i)
    {
        cout << setw(3)
        << numbers[i]
        << setw(6)
        << squares[i]
        << endl;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

当你在主函数的开头写这行时,

vec_sz size = numbers.size();

你想获得矢量的大小。但是,numbers为空,它不包含任何数据。因此大小将为0.这里numbers.size()将返回0.

因此for (vec_sz i = 0; i != numbers.size(); ++i)甚至不会执行一次。

我们假设您要填numbers,那么您应该知道要填写numbers多少个值。知道此值后,请将其存储在变量中,并说count

样品:

const int count = 10;

for (int i = 0; i < count; ++i) {
    numbers.push_back(i);
}

// now numbers.size() will return 10;

同样适合您的squares向量。