gpt4 book ai didi

c++ - 将指向字符串的共享指针从 cin 插入 vector

转载 作者:行者123 更新时间:2023-11-28 06:25:36 25 4
gpt4 key购买 nike

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

关于c++ - 将指向字符串的共享指针从 cin 插入 vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com