我正在尝试使用复制算法将字符串的共享指针插入到矢量中。是否可以从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));
}
};
谁能告诉我可能出现的问题?
谢谢!
答案 0 :(得分:1)
std::copy
在这里不合适,因为你正在读取字符串,但试图存储指向字符串的指针。
您的来源和目标类型不同,因此您需要std::transform
。此函数类似于copy,但它在将输入写入输出迭代器之前应用一个函数来转换输入。
transform(istream_iterator<string>(cin), istream_iterator<string>(), back_inserter(data),
[](const string& str) { return make_shared<string>(str); });