代码之家  ›  专栏  ›  技术社区  ›  Patrick

RETURN语句中的矢量初始化编译错误

  •  0
  • Patrick  · 技术社区  · 7 年前

    我只想做一些初始检查,如果需要的话,快速返回-1,-1矢量。不知怎么的,编译器说:我应该把返回类型改成vector*

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

    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 回复  |  直到 7 年前
        1
  •  3
  •   Dean Seo    7 年前

    不知怎么的,编译器说:我应该把返回类型改为 vector *

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

    因此,替换:

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

    用:

    return { -1, -1 };
    

    会让它如你所期望的那样工作。