You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断二维vector是否包含指定vector及编译报错排查

错误原因
  • 编译错误核心是std::find使用不符合要求:std::find用于在迭代器范围内查找单个指定值,你代码中遍历的是vector<int>类型的行元素,每个元素是int类型,但你第三个参数传入的是vecx(完整的vector<int>对象),二者类型不匹配,编译器无法完成比较操作,直接抛出编译错误。
  • 额外逻辑问题:你原代码中find的搜索范围只限定到行的前vecx.size()个元素,也不符合“判断整行是否包含vecx子序列”的需求。
修复方案

你要实现的“查找一维vector中是否包含另一个一维vector作为连续子序列”的功能,应该用标准库的std::search接口,修改对应逻辑段即可:

#include <bits/stdc++.h>
using namespace std;

int main() 
{
  vector<vector<int>> vec;
  for(int i=0;i<10;i++)
  {
    vector<int> veck;
    for(int j=0;j<10;j++)
      if(j==5)
        veck.emplace_back(5);
      else
        veck.emplace_back(i);
    vec.emplace_back(veck);
  }
  for(auto i:vec){
    for(auto j:i)
      cout<<j<<" ";
    cout<<"\n";
  }
  
  //-------------------------------
  
  vector<int> vecx(5,4);
  vecx.emplace_back(5);
  for(auto &i : vec) // 加&避免行拷贝,属于可选性能优化
  {
    // 使用search接口查找连续子序列
    auto itr = search(i.begin(), i.end(), vecx.begin(), vecx.end());
    if(itr != i.end())
      cout << "YES" << endl;
  }

}
运行说明

你当前构造的测试用例中,vec的每一行都是5个i、1个5、4个i,vecx是5个4加1个5,只有i=4的行才会匹配,运行后只会输出一次YES,符合逻辑预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:45:01