【问题标题】:C++ returning a vector (conversion of int to non-scalar type)C++ 返回一个向量(将 int 转换为非标量类型)
【发布时间】:2015-03-28 08:50:33
【问题描述】:

我试图用从 -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;
}

【问题讨论】:

  • @dmg 或根本不循环
  • 不,这不是您从该代码中得到的错误消息。
  • @molbdnilo 另一方面,他的第二个循环可能会运行很长时间。

标签: c++ vector types int scalar


【解决方案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();
}

【讨论】:

    【解决方案2】:

    你的函数的返回类型是int,但你返回的是std::vector&lt;int&gt;

    这应该可以纠正编译器错误。

    #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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 2018-10-23
      相关资源
      最近更新 更多