Всем привет! В чём я ошибся и как нужно правильно сделать. Пытаюсь заполнить вектор числами и показать его в консоле. Строка об ошибке: 1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.11.25503\include\algorithm(1158): error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов Я думаю ошибка в строке с generate. Я её закомментировал и ошибки не было. Но эта строка нужна. Через for не нужно. Хочу попробовать generate.
include include include include include include
using namespace std;
int irand(int a, int b) { return a + rand() % (b - a + 1); }
void main() { setlocale(LC_ALL, "rus"); srand(time(0)); const unsigned n = 20; int a = 0, b = 10; vector myVector(n); generate(myVector.begin(), myVector.end(), irand(a, b)); copy ( myVector.begin(), // итератор начала массива myVector.end(), // итератор конца массива ostream_iterator(cout, " ") //итератор потока вывода ); cin.get(); cin.get(); }
Может так?: generate(myVector.begin(), myVector.end(), [](int a, int b) { return irand(a, b); }); А то в тело не входят переменные. Лямбд тоже не помог. Та же ошибка.
В чём я ошибся и как нужно правильно сделать. Пытаюсь заполнить вектор числами и показать его в консоле.
Строка об ошибке: 1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.11.25503\include\algorithm(1158): error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов
Я думаю ошибка в строке с generate. Я её закомментировал и ошибки не было. Но эта строка нужна. Через for не нужно. Хочу попробовать generate.
include
include
include
include
include
include
using namespace std;
int irand(int a, int b)
{
return a + rand() % (b - a + 1);
}
void main()
{
setlocale(LC_ALL, "rus");
srand(time(0));
const unsigned n = 20;
int a = 0, b = 10;
vector myVector(n);
generate(myVector.begin(), myVector.end(), irand(a, b));
copy
(
myVector.begin(), // итератор начала массива
myVector.end(), // итератор конца массива
ostream_iterator(cout, " ") //итератор потока вывода
);
cin.get(); cin.get();
}
Спасибо за ответы!