Как вставить диапазон чисел в массив, перебирая его? - PullRequest
0 голосов
/ 22 февраля 2019

Я делаю программу, в которой мне нужно перебирать числа, начиная с 1 до num, затем помещать значение этого массива {1...num} в переменную, которая может быть вызвана в forloop.

Вот где я нахожусь.

int main()
{
    int num = 0;
    cin >> num;

    for (int i = 1; i <= num; i++)
    {
        procnum[i];
    }
}

Мне нужно procnum[num], чтобы иметь значение, подобное ...

int procnum[num] = {1,2,3...num};

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Если вы можете использовать std :: vector и std :: iota , это всего лишь двухстрочный код.

Нет необходимости в (индексном) циклемассив. Смотрите живой пример здесь

#include <vector>   // std::vector
#include <numeric>  // std::iota

std::vector<int> procnum(some_size);
std::iota(procnum.begin(), procnum.end(), 1);
0 голосов
/ 22 февраля 2019

В C ++ 11 нет необходимости даже писать цикл, если только вам не нужно проверять ошибки (например, проверять, успешно ли выполнено чтение или что входное значение допустимо).

#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm> 

int main()
{
     int size;
     std::cin >> size;

     std::vector<int> procnum(size);

     std::iota(procnum.begin(), procnum.end(), 1);    // starting value is 1

     //  output vector to demonstrate it is populated

     std::copy(procnum.begin(), procnum.end(), std::ostream_iterator<int>(std::cout," ");
     std::cout << "\n";
}

До C ++ 11 не было алгоритма std::iota(), но можно использовать std::generate() и простой функтор для достижения того же эффекта.

0 голосов
/ 22 февраля 2019

вы можете использовать std::vector для создания динамических массивов:

#include <iostream>
#include <vector>

int main() {
    int size;
    std::cin >> size;

    std::vector<int> procnum(size);
    for (int i = 0; i < size; ++i) {
        procnum[i] = i + 1;
    }
}

вы не должны use namespace std; - читать здесь почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...