return 语句中向量初始化时出现编译错误

Pat*_*ick 1 c++ return vector

我只想做一些初始检查,并在必要时快速返回 {-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;
}
Run Code Online (Sandbox Code Playgroud)

Dea*_*Seo 5

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

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

因此,替换:

return new vector<int> {-1, -1};   
Run Code Online (Sandbox Code Playgroud)

和:

return { -1, -1 };
Run Code Online (Sandbox Code Playgroud)

会让它按照你的预期工作。