使用int输入从函数返回向量

时间:2017-10-01 15:52:10

标签: c++

我正在尝试列出Prime数字。我试图将它们列在Vector(动态大小调整)中,而不是简单地列出它们。

我无法理解为什么我不能把它们列出来。

#include "TestFile.h"
#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

vector<int> primeCalc(int z)
{
    vector<int> myVector;

    for (int i = 3; i <= 100; i += 2)
    {
        float val = i; // Produce float value
        int mid = static_cast<int>(sqrt(val));
        int j;
        for (j = 3; j <= mid; j += 2)
            if (i % j == 0)
                break;

        if (j > mid)
            myVector.push_back(i);
    }
    cout << sizeof(myVector) << endl;
    return myVector;
}

int main()
{
    int x = 100;
    vector<int> myAnswer;

    myVector = primeCalc(x);
    for (std::vector<char>::const_iterator i = myAnswer.begin(); i != myAnswer.end(); i++) 
    {
        std::cout << *i << ' ';
    }

    return 0;
}

编辑:根据建议进行编辑。出现此错误:无法从'__wrap_iter<pointer>'转换为'__wrap_iter<const_pointer>'。当我计算48个数字时,我也不明白为什么sizeof()返回24的值。

1 个答案:

答案 0 :(得分:1)

您需要手动打印main()的内容;您可以在primeCalc()for (std::vector<int>::const_iterator i = myVector.begin(); i != myVector.end(); i++) { std::cout << *i << ' '; }

中执行此操作
primeCalc()

如果您希望int返回一个向量,则需要将其返回类型从std::vector<int>更改为{{1}}。