C ++, возвращающий вектор (преобразование int в нескалярный тип)

Я пытаюсь заполнить вектор целыми числами, начиная с -1 и до отрицательного значения моего параметра размера. Например: если параметр равен 6, то я хочу, чтобы вектор имел 6 элементов, от -1 до -6. О, и если параметр размера меньше 1, я хочу вернуть пустой параметр.

Я получаю сообщение об ошибке «преобразование из int в нескалярный тип». Насколько мне известно, это хороший код, но, очевидно, я не могу понять это. Любая помощь приветствуется.

#include <iostream>
#include <vector>

int negativity(int size) {
std::vector<int> vect;
if (size < 1) {
return vect;
}
for (int i=-1; i > size; i--) {
vect.push_back(i);
}
return vect;
}

-1

Решение

Тип возврата вашей функции int, но вы возвращаетесь std::vector<int>,

Это должно исправить ошибку компилятора.

#include <iostream>
#include <vector>
std::vector<int> negativity(int size) {
std::vector<int> vect;
if (size < 1) {
return vect;
}
for (int i=-1; i > size; i--) {
vect.push_back(i);
}
return vect;
}
5

Другие решения

/** other implementation;
- Usage of an argument to avoid duplication of copying object.
*/
size_t negativity(std::vector<int>& vResult, const unsigned int uiHowmany)
{
vResult.clear();
for(unsigned int i=1; i < uiHowmany; ++i)
{
vResult.push_back((-1)*i);
}
return vResult.size();
}
1

По вопросам рекламы [email protected]