You need to enable JavaScript to run this app. 为什么LeetCode可正常运行本地IDE无法通过的C++代码?
优惠活动
大模型
产品
解决方案
定价
更多

为什么LeetCode可正常运行本地IDE无法通过的C++代码?

问题1:为什么本地需要加const修饰参数才能编译,LeetCode不需要

C++语法规定非const左值引用不能绑定到右值(临时对象):

  • 你本地main函数中调用solution.twoSum({2,7,11,15},9);时,{2,7,11,15}会生成一个临时的vector<int>对象,属于右值。如果参数是vector<int>& nums(非const左值引用),语法上不允许绑定到这个临时对象,所以编译报错;加了const之后变成const vector<int>& nums,const左值引用允许绑定右值,所以编译通过。
  • LeetCode平台的调用逻辑是先构造好存储输入数据的vector<int>左值对象,再把这个左值传给twoSum函数,非const左值引用可以正常绑定左值,所以不需要加const也能编译运行。

问题2:为什么本地运行无输出,LeetCode有输出

  • LeetCode的判题框架会自动接收twoSum函数的返回值,内部做结果校验和格式化输出,不需要你自己写打印逻辑。
  • 你本地的main函数只调用了twoSum函数,没有写任何打印返回值的代码,当然不会有任何输出。你只需要修改main函数,把返回结果打印出来即可,示例如下:
int main() {
    Solution solution;
    vector<int> res = solution.twoSum({2,7,11,15},9);
    cout << res[0] << " " << res[1] << endl;
    return 0;
}

内容的提问来源于stack exchange,提问作者noobi3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 16:36:00