将指向字符串的共享指针从 cin 插入 vector
Inserting shared pointers to strings from cin into vector
我正在尝试使用复制算法将指向字符串的共享指针插入向量中。是否可以使用复制算法从 istream 中读取行并将 shared_ptr 存储到向量中的那些字符串?到目前为止,我坚持以下 class。
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); });
我正在尝试使用复制算法将指向字符串的共享指针插入向量中。是否可以使用复制算法从 istream 中读取行并将 shared_ptr 存储到向量中的那些字符串?到目前为止,我坚持以下 class。
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); });