在c++中分离流
Separating streams in C++
int n = 1;
//Lines 14 to (vertices+13) read
while (i<(vertices+14))
{
//First three numbers on each line put into "v1"
if (n < 4)
{
copy(istream_iterator<float>(input),
istream_iterator<float>(),
back_inserter(v1));
n++;
}
//Last three numbers on each line put into "v2"
else
{
copy(istream_iterator<float>(input),
istream_iterator<float>(),
back_inserter(v2));
n++;
if (n > 6)
{
i++;
n=1;
}
}
这应该将一行的前三个数字排序到一个向量中,将最后三个数字排序到另一个向量中。然而,由于我怀疑流工作的本质,所有的数字都进入向量v1,没有一个进入向量v2。
问题是由于std::copy
的工作方式。
第二个参数标记了停止复制的位置,你的参数
istream_iterator<float>()
表示"流的结尾"。对copy
的第一个调用正在读取整个流。
使用std::copy_n
代替复制一定数量
:
是否也有使用copy的第二个参数来获得三个数字的方法?
这正是它的作用。对于一些数字n,如果要复制n值,请使用std::copy_n
。
相关文章:
- C++:如何读取分离变量,然后读取向量
- 分离一个静态常量 std::thread?
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 如何在 c++ 中将数据与文件流分离
- 为什么堆栈和堆在内存中分离得如此之多?
- 具有可分离内核的 2D 模糊卷积
- 为什么即使调用了析构函数,C++11 中的分离线程也可以执行
- 防止编译器分离函数的指令
- 分离库的主机端和 CUDA 设备端版本
- C++将文件行分离为String和Int
- 分离类所有权和使用,生成最佳(快速)代码
- 动态空间分离C++程序中的输入
- 如何从几乎排序的链表中分离放错位置的元素?
- 检查分离的线程是否还活着?
- 真的需要在 .h 和 .cpp 文件中分离 c++ 结构吗?
- 为什么分离线程没有得到输出消息
- 将偶数和奇数随机数分离并打印出来
- 如何"stop"正在等待条件变量的分离线程?
- 有没有办法在一段时间后将流程从流出中分离出来
- 如何在模板参数中分离函数类型返回类型和参数