现在我正在使用一个复制构造函数来获取一个名为val的类型为char的列表,我需要获取传递给复制构造函数的字符串v的所有元素并将它们放入val列表中。
Public:
LongInt(const string v);
Private:
list<char> val;
所以在LongInt类的公共部分,我有一个复制构造函数,它接受val列表并将v字符串复制到其中。任何人都可以帮我弄清楚如何做到这一点?提前谢谢!
答案 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
。