c++ - 返回语句中 vector 初始化的编译错误

标签 c++ vector return

我只想做一些初始检查,并在必要时快速返回 {-1, -1} vector 。不知何故,编译器说:我应该将返回类型更改为 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;
}

最佳答案

Somehow, compiler says: I should change return type into vector *

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

因此,替换:

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

与:

return { -1, -1 };

将使它如您所愿地工作。

关于c++ - 返回语句中 vector 初始化的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51354361/

相关文章:

c++ - 选择 initializer_list 迭代器定义

c++ - 使用带有增量迭代器的 std::find

R - 如何重新排序行索引号

python - 递归函数返回值保留以前运行的结果

c++ - 训练 NN 计算 atan2(y, x)

C++ 相当于Java http请求

c++ - 代码重复和模板特化(当特化函数有不同的返回类型时)

C++ 11 vector 构造函数复制与范围?

java - 数组中缺少 return 语句错误

android - 从 AsyncTask 获取返回的 JSON