【问题标题】:Merging two lists of string合并两个字符串列表
【发布时间】:2017-09-11 22:54:54
【问题描述】:

如果这是一个容易解决的问题,请原谅我,我是 C++ 新手。

我有一个类和一个主方法:

class Test 
{
public:
    static std::list<std::string> list1[];
};
std::list<std::string> Test::list1[] = { "apple", "orange", "pear" };

int main()
{
    std::list<std::string> list2[] = { "banana", "mango", "pineapple" }; 
    Test::list1.merge(list2);
    std::cout << list1 << endl;
    return 0;
}

我想将 list1 和 list2 加在一起,以便它们输出“apple”、“orange”、“pear”、“banana”、“mango”、“pineapple”。但是,当我尝试上述方法时,会出现如下错误:

不存在合适的构造函数将“const char [24]”转换为“std::list>”

感谢您的帮助。

【问题讨论】:

  • 从合并行中移除 Test::
  • 从列表声明的末尾删除[]s。他们告诉 C++ 你希望你的变量是 std::list&lt;std::string&gt; 的数组,这不是你想要的。
  • @Meccano 我不同意你的观点,list1 在类Test,所以你必须用Test::list1声明

标签: c++ list c++11 merge concatenation


【解决方案1】:
#include <iostream>
#include <list>
#include <string>

class Test
{
public:
    static std::list<std::string> list1;
};
std::list<std::string> Test::list1 = { "apple", "orange", "pear" };

int main()
{
    std::list<std::string> list2 = { "banana", "mango", "pineapple" };
    Test::list1.merge(list2);
    for(const auto& itr : Test::list1)
        std::cout << itr << std::endl;
    return 0;
}

列表不要使用运算符[]。如果你想要显示列表,你必须使用它,就像上面一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2018-03-08
    • 2021-03-12
    • 1970-01-01
    相关资源
    最近更新 更多