【问题标题】:Compile Error on vector initialization in return statement返回语句中向量初始化的编译错误
【发布时间】:2018-07-16 03:52:55
【问题描述】:

我只想做一些初步检查,并在必要时快速返回 {-1, -1} 向量。不知何故,编译器说:我应该将返回类型更改为向量 *

但在我执行此预检查代码之前,当前的返回类型适用于我后面的部分。那么我误解了什么?

class SomeClass {
  public:
    static vector<int> solution(vector<int>& numbers, int target) {
      if (numbers.empty() || numbers.size() < 2) {
        return new vector<int> {-1, -1};   // <== Compile Error
      }
      unordered_map<int, int> hash;
      vector<int> result;
      .
      .
      .
      return result;
    }
};

int main() {
  vector<int> testNums = {11, 15, 2, 7};
  vector<int> result = SomeClass::solution(testNums, 9);
  return 0;
}

【问题讨论】:

  • 删除关键字new
  • 还有vector &lt;int&gt; - 编译器会自己解决这个问题。

标签: c++ vector return


【解决方案1】:

不知何故,编译器说:我应该将返回类型更改为vector *

在 C++ 中,您需要一个指针(或 类指针 类型)来指向动态分配的内存。

因此,替换:

return new vector<int> {-1, -1};   

与:

return { -1, -1 };

会如你所愿。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2020-01-08
    • 1970-01-01
    • 2018-05-01
    • 2018-09-07
    相关资源
    最近更新 更多