-2
私は、Prime Numbersをリストしようとしています。単にリストするのではなく、Vector(ダイナミックサイジング)に列挙させようとしています。int型の関数からのベクトルを返す
なぜ私はそれらをリストアップできないのか理解できません。
#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>'
への実行可能な変換はありません。私はあまりにもsizeof()
が私が48の数を数えたときに値24を返した理由を理解していない。
戻り値の型をintからstd :: vectorに変更すると、関数をベクトル型としても初期化する必要があることを意味しますか? –
C++で関数を実際に初期化するわけではありませんが、 'primeCalc()'にintを渡すことについて話していますか?もしそうなら、あなたはその議論をそのまま維持することができます。 'std :: vector'変数を 'primeCalc()'で初期化し、それに素数を加えて、その変数を返す必要があります。 –
frslm
@RyanLee私は ' 'の代わりに' 'を使うように私の答えを編集しました。これにより少なくとも1つの問題が修正されるはずです。 'sizeof(myVector)'に関しては、代わりに 'myVector.size()'を使って 'myVector'の要素数を取得する必要があります。 –
frslm