[英]Inserting shared pointers to strings from cin into vector
我正在嘗試使用復制算法將指向字符串的共享指針插入向量中。 是否可以使用復制算法從istream中讀取行並將shared_ptr存儲到向量中的那些字符串? 到目前為止,我仍然堅持下面的課程。
class DVector
{
typedef vector<shared_ptr<string>> PTSVector;
PTSVector data;
public:
void push_back()
{
copy(istream_iterator<string>(cin),
istream_iterator<string>(),
back_inserter(data));
}
};
誰能告訴我可能出什么問題了?
謝謝!
std::copy
在這里不合適,因為您正在讀取字符串,但是嘗試存儲指向字符串的指針。
您的源和目標類型不同,因此您需要std::transform
。 此函數與復制類似,但是它應用了一個函數來轉換輸入,然后再將其寫入輸出迭代器。
transform(istream_iterator<string>(cin), istream_iterator<string>(), back_inserter(data),
[](const string& str) { return make_shared<string>(str); });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.