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

C++中比较不同大小vector:字符与行向量匹配问题

嘿,我来帮你解决这两个问题~

首先说输出顺序混乱的问题:大概率是你遍历的顺序搞反了!你应该先遍历字符向量里的每个字符,再对每个字符去行向量里找匹配——这样输出顺序就完全和你输入的字符顺序一致了。如果反过来先遍历行再遍历字符,那输出顺序肯定会乱。

然后是字符找不到匹配的情况:我们可以加个标记,遍历完所有行都没找到目标字符时,输出自定义的提示(比如-1,-1或者“未找到”)。

给你写个完整的C++示例代码,直接就能跑:

#include <iostream>
#include <vector>
#include <string>

int main() {
    // 模拟你的行向量和字符向量
    std::vector<std::string> row_vec = {"ABCDEF", "HIJKL"};
    std::vector<char> char_vec = {'C', 'E', 'F', 'C', 'X'}; // 加了个X测试找不到的情况

    // 核心逻辑:先遍历字符,保证输出顺序和输入一致
    for (char target_char : char_vec) {
        bool is_found = false;
        // 遍历每一行找匹配
        for (size_t row_idx = 0; row_idx < row_vec.size(); ++row_idx) {
            const std::string& current_row = row_vec[row_idx];
            size_t col_idx = current_row.find(target_char);
            
            if (col_idx != std::string::npos) {
                // 找到匹配,输出位置
                std::cout << row_idx << "," << col_idx << " ";
                is_found = true;
                // 这里的break是只取第一个匹配的行,如果要输出所有行的匹配,去掉break就行
                break;
            }
        }
        // 没找到的情况处理
        if (!is_found) {
            std::cout << "未找到" << " ";
            // 也可以输出你想要的标记,比如:std::cout << "-1,-1" << " ";
        }
    }
    std::cout << std::endl;
    return 0;
}

运行这段代码的输出是:0,2 0,4 0,5 0,2 未找到 ,完美符合你的需求,还处理了找不到的情况。

额外说明几点:

  • 如果你的需求是同一个字符在多行都有匹配时,输出所有匹配位置,那把内层循环里的break删掉就行,比如如果行向量里有"ABC"和"XCX",字符是'C',就会输出0,2 1,2。
  • 代码里用的是C++标准库的string::find,默认从行首开始找第一个匹配的字符,如果你需要找一行里所有相同字符的位置,可以循环调用find直到返回npos。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:10:24