我正在尝试列出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的值。
答案 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}}。