簡體   English   中英

將cin的字符串共享指針插入向量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM