C ++返回一个向量(int转换为非标量类型)

时间:2015-01-29 07:49:49

标签: c++ vector types int scalar

我正在尝试使用以-1开头的整数填充向量,直到我的size参数为负。例如:如果参数是6,那么我希望向量有6个项目,从-1到-6。哦,如果size参数小于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;
}

2 个答案:

答案 0 :(得分:5)

您的函数的返回类型为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;
}

答案 1 :(得分:1)

/** 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();
}