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

C++中判断vector b元素是否在vector a中无输出问题排查

问题原因

问题出在你对std::find的用法理解有误——它对字符串做的是完全匹配,也就是必须两个字符串完完全全一模一样才算找到,而不是你预期的“子串包含”。

你看,容器a里的元素是"abcd"、"efgh"、"ijkl",b里的第一个元素是"efg",和a里的"efgh"差了一个h,自然匹配不上,所以代码没输出。

两种修正方向

如果你想实现“检查b的元素是否是a中元素的子串”,得换个写法,遍历a的每个元素,用字符串的find方法判断包含关系:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main()
{
    vector<string> a = {"abcd", "efgh","ijkl"};
    vector<string> b = {"efg","mno"};

    for(const auto& target : b) {
        bool is_found = false;
        for(const auto& str : a) {
            // 检查target是否是str的子串
            if(str.find(target) != string::npos) {
                is_found = true;
                break;
            }
        }
        if(is_found) {
            cout << target << endl;
        }
    }  

    return 0;
}

这段代码运行后会输出efg,符合你的预期。

要是你本来就想做完全匹配,那只要把b里的"efg"改成"efgh",原代码就能正常输出了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:22:11