繁体   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