Заполнение массива от 0 до числа N-1

#include <vector>
#include <iostream>

std::vector<int> arr(int n = 0) {
  std::cin >> n;
  for (int i=0; i<n-1; i++)
    {
   arr[i]=i;
  }
  for (int i=0; i<=n-1; i++)
    {
   std::cout << arr[i];
  }
}

выдаёт следующие ошибки при тесте на сайте:

main.cpp:11:4: error: subscript of pointer to function type 'std::vector<int> (int)'
   arr[i]=i;
   ^~~
main.cpp:15:17: error: subscript of pointer to function type 'std::vector<int> (int)'
   std::cout << arr[i] << ",";
                ^~~
2 errors generated.

В ide visual studio пишет: для индекса требуется массив или указатель

Пытался так же делать без вектора, обычным массивом, тоже не работает. Задача на https://www.codewars.com/kata/571d42206414b103dc0006a1/train/cpp


Ответы (2 шт):

Автор решения: Harry

Заглянул на сайт. Вам надо было всего лишь в своей функции объявить вектор с другим именем, каковой и вернуть:

std::vector<int> arr(int n = 0) {
    std::vector<int> a;
    for(int i = 0; i < n; ++i)
        a.push_back(i);
    return a;
}

Вы же ничтоже сумняшеся в качестве вектора пытались использовать саму функцию. Для чего она никак не предназначена :)

→ Ссылка
Автор решения: AR Hovsepyan

Алгоритм написан, нужно просто его использовать:

int n;
std::cin >> n;
std::vector<int> arr(n);
std::iota(arr.begin(), arr.end(), 0);
→ Ссылка