В C++, используя векторный заголовок, как мне найти количество элементов?C++ Vector Elements Count
#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
#include <vector>
using namespace std;
int primer(int max);
int main()
{
system("pause");
return 0;
primer(1000);
}
int primer(int max){
vector<int> a;
a[1]=2;
for (int i=2;i<=max;i++){
bool prime=true;
for (int ii=1;ii<=#a;ii++) {
if i/a[ii]==math.floor(i/a[ii]) {
prime=false;
}
}
if prime==true {
a[#a+1]=i;
}
}
for (i=1;i<=#a;i++) {
cout << a[i]);
}
}
}
Первоначально я написал код для Lua, и это моя попытка перевести его на C++. Я был бы признателен за специфику, например, за конкретную замену плохой линии. Я попытался заменить #a на a.size, но это не сработало.
После доработки:
#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
#include <vector>
using namespace std;
int primer(int max);
int main()
{
primer(5);
system("pause");
return 0;
}
int primer(int max){
vector<int> a;
a[1]=2;
for (int i=2;i<=max;i++){
bool prime=true;
for (int ii=0;ii<a.size();ii++) {
if (i/a[ii]==floor(i/a[ii])) {
prime=false;
}
}
if (prime==true) {
a.push_back(i);
}
}
for (int iii=0;iii<=a.size();iii++) {
cout << a[iii] << endl;
}
}
Он падает без запуска. По какой причине это?
У вас тоже будут проблемы с диапазоном. Чтобы использовать вектор правильно, вам придется либо указать его размер, либо использовать 'push_back'. –
@TimeCoder: Не обижайтесь, но попытка научиться программировать на C++ (редактировать), публикуя на SO, будет расточаю как ваше время, так и наше. –
То же, что и для 99% аналогичного вопроса http://stackoverflow.com/questions/4741436/boundless-arrays, который вы только что разместили сами. –