gpt4 book ai didi

c++ - 如何将提取运算符 (>>) 与 vector 一起使用?

转载 作者:可可西里 更新时间:2023-11-01 18:36:48 25 4
gpt4 key购买 nike

vector<int> someVector 为例和 istringstream someStringStream你可以这样做:

for (int i=0; i < someVector.size(); i++) {
someStringStream >> someVector[i];
}

我知道vector<bool>是一个有效的实现,operator[]返回一个引用对象。对于这段代码,我应该使用索引而不是迭代器,主要是为了提高可读性。目前,我正在使用这个:

for (int i=0; i < someVector.size(); i++) {
bool temp;
someStringStream >> temp;
someVector[i] = temp;
}

有没有更直接的实现方法?

最佳答案

如果您想使用整个流,您可以使用 std::copystd::vector 范围构造函数:

std::stringstream ss("1 0 1 0");
std::vector<bool> vec;
std::copy(std::istream_iterator<bool>(ss), {}, std::back_inserter(vec));

LIVE DEMO

std::stringstream ss("1 0 1 0");
std::vector<bool> vec(std::istream_iterator<bool>(ss), {});

LIVE DEMO

现在查看您发布的示例,如果您确定您的 std::vector 大小合适,您可以使用 std::generate示例如下:

std::stringstream ss("1 0 1 0");
std::vector<bool> vec(4);
std::generate(std::begin(vec), std::end(vec), [&ss](){ bool val; ss >> val; return val;});

LIVE DEMO

关于c++ - 如何将提取运算符 (>>) 与 vector<bool> 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631376/

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