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