返回语句中向量初始化时的编译错误

时间:2018-07-16 03:52:56

标签: c++ vector return

我只想进行一些初步检查,并在需要时快速返回{-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;
}

1 个答案:

答案 0 :(得分:3)

  

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

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

因此,替换:

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

具有:

return { -1, -1 };

将使其按预期运行。