C ++使用STL List,如何将现有列表复制到新列表中

时间:2011-04-04 19:04:44

标签: c++ list stl linked-list long-integer

现在我正在使用一个复制构造函数来获取一个名为val的类型为char的列表,我需要获取传递给复制构造函数的字符串v的所有元素并将它们放入val列表中。

Public:
LongInt(const string v);

Private:
list<char> val;

所以在LongInt类的公共部分,我有一个复制构造函数,它接受val列表并将v字符串复制到其中。任何人都可以帮我弄清楚如何做到这一点?提前谢谢!

4 个答案:

答案 0 :(得分:3)

您必须遍历字符串并逐个字符地提取数据。使用std::copy算法应该有效:

std::copy(v.begin(), v.end(), std::back_inserter(val));

答案 1 :(得分:1)

LongInt构造函数中,只需使用iterator, iterator list构造函数:

LongInt(const string v) : val(v.begin(), v.end()) { }

话虽如此,您是否考虑过实际使用string或可能deque<char>来操纵您的序列而不是list?根据您的需求,这些替代方案可能会更好。

答案 2 :(得分:1)

LongInt::LongInt( const string v ) : val(v.begin(), v.end())
{
}

答案 3 :(得分:0)

首先,如果它是您正在存储的字符串,请使用std::string。这是一个像任何其他容器一样的容器。如果您不能或不想存储字符串,请使用std::vector。但是,无论如何,这将归结为功能较少std::string,所以只需使用std::string

复制:

std::copy( v.begin(), v.end(), std::back_inserter(val) );

但如果它是您要存储的std::string列表,请使用char