【问题标题】:two vector<string> concatenation两个向量<string> 连接
【发布时间】:2016-06-17 20:11:25
【问题描述】:

我有两个向量,像这样:

A ={"Sam", "Jordan", "Mike"}
B ={"Smith", "Lancaster", "Horgen"}

连接后,它们应该如下所示:

A ={"SamSmith", "JordanLancaster", "MikeHorgen"}

基本上,您将名字和姓氏结合在一起。 我该怎么做?

【问题讨论】:

    标签: c++ string vector concatenation


    【解决方案1】:

    使用std::transform (live example):

    std::transform(
        begin(A), end(A), begin(B), begin(A), 
        [](const auto& s1, const auto& s2) { return s1 + s2; }
    );
    

    【讨论】:

    • "这里不允许自动",我不知道是什么意思
    • @JY078 您的编译器不支持通用 lambda。明确指定参数类型(例如std::string
    • @JY078,是的,如前所述,这只是为了方便,适用于 C++14。
    【解决方案2】:
    for (size_t i = 0; i < A.size() && i < B.size(); ++i)
       A[i] += B[i];
    

    现在A 向量包含所需的输出。

    【讨论】:

    • 你有 2 个 for 循环,我试过了,是这样的:SamSmith、SamLancaster、SamHorgen、JordanSmith、JordanLancaster、JordanHorgen、MikeSmith、MikeLancaster、MikeHorgen
    【解决方案3】:

    这可以通过在每个步骤中迭代两个向量和concatenating 字符串并将结果分配回A 来轻松完成,

     typedef vector<string>::iterator VIter;
    
        for(VIter it1=A.begin(), it2=B.begin(); it1 != A.end(), it2 != B.end(); ++it1, ++it2)
        {
                *it1 = *it1 +*it2;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 2012-07-19
      • 2021-12-06
      相关资源
      最近更新 更多