如何存储while循环期间生成的数据
How to store the data produced during a while loop?
我几个小时前开始学习C++(这是我尝试学习的第一种编程语言),但我遇到了一个非常简单的问题(我确信)。。。
基本上,我想从一个算法开始,在给定高度和宽度为整数值的2D表面上,为任何点(由整数a和b定义)提供一个局部"密度值"。
我遇到的问题是,由于我想重用结果,如何存储程序启动时显示的数据(由于命令而显示的数据:
//print
cout<<D<<endl;
我真的很努力地想找到解决方案,却一无所获。。。它可以存储在一个外部文件中,也可以存储在某种"缓冲区"中,任何好的解决方案都可以。
我只需要保留这个数据列表
谢谢!
这是我的代码:
#include <iostream>
#include <fstream>
//#include <vector> (the solution??)
#include <cstdlib>
#include <string>
#include <sstream>
using namespace std;
// constant values
float Da=0.1; //densities
float Db=0.5;
float Dc=1;
double Dd=1/3;
int l = 99; //width & height
int h = 99;
float u = 1; // UNIT
int main ()
{
float a = 0;
float b = 0; // Local variables
while (a<l+1, b<h+1){
//values for given a & b
double DL = Da-Da*(b/h)+Dc*(b/h);
double DR = Db-Db*(b/h)+Dd*(b/h);
double D = DL-DL*(a/l)+DR*(a/l);
//print
cout<<D<<endl;
// next pixel & next line
a++;
if (a>l) {
a = 0;
b = b+u;
}
}
}
如果你只想把它们存储在列表或其他东西中,那么vector是一个很好的选择,正如@Ben Voigt所提到的。。。
在您的情况下:
std::vector<double> myVector;
.
.
.
.
double D = DL-DL*(a/l)+DR*(a/l);
// Storing over the vector
myvector.push_back (D);
所以现在你可以用任何你想用的方式来使用向量……别忘了取消注释你的行以包含向量。。。您还可以使用"pop_back"方法在需要时从中删除某些内容…
要在文件上加载矢量,请执行以下操作:将矢量值写入文件
操纵矢量的良好链接:http://msdn.microsoft.com/en-IN/library/8wt934f9%28v=vs.71%29.aspx
如果您需要了解矢量:http://www.cplusplus.com/reference/vector/vector/
假设程序运行时显示了要存储的数据,则可以通过将输出重定向到文件来启动程序。
例如,在linux、unix或具有支持数据重定向的shell的操作系统中:
myprogram>data.txt
然后,您将在文件"data.txt"中看到相同的数据。
您可以使用fstream将值保存到文件中。
fstream output("densities");
然后用output
替换cout
。
这将导致您的值被写入应用程序工作目录中名为"densities"的文件中。这将始终将数据写入同一个文件,因此如果希望在不同的运行之间保留输出,请小心。
当您稍后想要读取该文件时,您将执行类似的操作。
fstream input("densities");
vector<double> values;
// ... inside your loop
double value;
input >> value;
values.push_back(value);
// ... somewhere else use the values
// for example, get the 11th density value.
double density = values[10];
祝你好运!
- 与多个 for 循环与单个 for 循环 wrt 相关的性能从多映射获取数据
- OpenMP:for 循环避免数据竞争,而无需使用关键
- 有没有办法在C++中循环访问对象的不同数据成员
- C++ - 使用用户输入的字符串数据检查结构字符串数据(无限执行 while 循环)
- 类方法 - 数据结构中 For 循环的运行时错误
- 用于循环访问多个集合的数据结构
- 增强循环缓冲区push_back在前面插入数据
- 从文件导入数据时遇到问题.我有一个没完没了的循环
- 它不显示数据,只显示永无止境的循环
- C++:从文件中读取x y数据会产生无限循环吗
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 将结构数据存储在循环缓冲区中
- 利用输入文件中的数据(字符串和int)并在循环中利用
- boost::asio::async_read 无限循环,接收数据为零字节
- 如何使用for循环将数据保存在不同的文件中?
- C++ 数据结构队列:使用 for 循环查找队列中最大的元素
- C++ - 将数据插入到地图循环的地图中
- 输入数据类型检查循环未按预期工作 (C++)
- 如果输入变量的数据类型与以前不同,如何使我的循环仍然正常运行?
- 如何在每次循环迭代期间生成向量,存储数据,然后删除该向量?