我想将一些数据输出到文件中.例如假设我有两个双打向量:
vector<double> data1(10);
vector<double> data2(10);
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法将其输出到文件,以便第一行包含标题'data1'和'data2',后跟实际内容.输出数据的函数将传递各种不同的数组,因此不可能硬编码标题的名称 - 理想情况下,我想将变量名称转换为某个字符串,然后输出该字符串,后跟向量数组的内容.但是,我不确定如何将变量名'data1'转换为字符串,或者确实如果它可以很容易地完成(从阅读论坛我的猜测是不可以)如果这是不可能的替代可能是使用关联容器(如map)或更简单的"对"容器.
pair<vector<double>,string> data1(10,'data1');
Run Code Online (Sandbox Code Playgroud)
欢迎大家提出意见!
我正在使用STL函数count_if来计算双精度矢量中的所有正值.例如,我的代码是这样的:
vector<double> Array(1,1.0)
Array.push_back(-1.0);
Array.push_back(1.0);
cout << count_if(Array.begin(), Array.end(), isPositive);
Run Code Online (Sandbox Code Playgroud)
其中函数isPositive定义为
bool isPositive(double x)
{
return (x>0);
}
Run Code Online (Sandbox Code Playgroud)
下面的代码将返回2.有没有办法在不写我自己的函数isPositive的情况下执行上述操作?我可以使用内置功能吗?
谢谢!
我有一个双打矢量,我需要创建另一个数组,它是第一个元素的累积和.例如;
vector<double> Array(10,1);
vector<double> Sum(10);
Sum[0] = Array[0];
for(unsigned int i=1; i<Array.size(); i++)
Sum[i] = Sum[i-1] + Array[i];
Run Code Online (Sandbox Code Playgroud)
是否有内置函数可以执行上述累积和?
我正在将时序数据的csv文件读入C++程序.然而,我的数据包含一些NaN.例如:
1-Jul-2010, 1.0
2-Jul-2010, 2.0
3-Jul-2010, NaN
4-Jul-2010, 3.0
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我在Matlab中编写了一个简短的脚本,将所有NaN替换为0.0 - 然后在没有NaN的情况下读入新文件.有简单的方法还是避免这种预处理?
谢谢!
我有许多字符串向量,每个字符串包含日期.作为一个简单的例子,大小为2的向量A可能包含:
A[0] = "01-Jul-2010";
A[1] = "03-Jul-2010";
Run Code Online (Sandbox Code Playgroud)
而第3个大小为3的向量B可能包含:
B[0] = "02-Jul-2010";
B[1] = "03-Jul-2010";
B[2] = "04-Jul-2010";
Run Code Online (Sandbox Code Playgroud)
我想形成一个向量C,其中包含A和B中元素的"联合":
C[0] = "01-Jul-2010";
C[1] = "02-Jul-2010";
C[2] = "03-Jul-2010";
C[3] = "04-Jul-2010";
Run Code Online (Sandbox Code Playgroud)
当组合A和BI时,不需要任何重复日期,因此C的每个元素必须是唯一的.是否有我可以调用的内置/ stl(或Boost库)函数可以执行此操作?
谢谢!
我正在使用向量容器来存储双精度数组.有没有快速的方法将我的向量中的每个元素乘以一些标量而不使用循环.
例如:
vector<double> Array(10,1);
Run Code Online (Sandbox Code Playgroud)
将使用初始值1初始化10个双精度数组.要将此数组乘以0.5,我会写:
for(unsigned int i=0; i<Array.size(); i++)
Array[i] = 0.5*Array[i];
Run Code Online (Sandbox Code Playgroud)
那还有另一种方式吗?我使用了重载'*'运算符的valarray,以便:
Array = 0.5 * Array;
Run Code Online (Sandbox Code Playgroud)
是有效的,但我宁愿不使用valarray,因为它似乎是一个更标准的操作数组的方法.
谢谢!
我有一个string类型的变量数组.就像是:
std::string Array1[3] = {"A","B","C"};
Run Code Online (Sandbox Code Playgroud)
我想将这个数组的内容复制到另一个数组中:
std::string Array2[3];
Run Code Online (Sandbox Code Playgroud)
目前我使用循环来做到这一点.有没有更简单/替代的方式?如果我按如下方式声明和初始化变量:
if( ... check some condition ... )
{
.
.
std::string Array1[3] = {"A","B","C"};
}
Run Code Online (Sandbox Code Playgroud)
一旦离开if语句的范围,它显然会被销毁.有没有办法避免这种情况,以便以后可以在函数中使用它.理想情况下,我想避免声明变量Array1 global.
谢谢
我想计算双精度矢量的标准差(称为A).现在我有一个名为StDev的函数可以执行此操作.但是,向量A的前几个元素为零,我需要删除它们.为此,我创建一个子数组,然后将其传递给我的StDev函数,如下所示:
std::vector<double> Array(find_if(Data.begin(), Data.end(), std::bind1st (std::not_equal_to<double>(), 0.0)), Data.end());
double standard_deviation = StDev(Array);
Run Code Online (Sandbox Code Playgroud)
有没有办法这样做而不必创建仅使用一次的矢量'Array'.我可以以某种方式直接传递所需的子数组吗?
谢谢!
我想计算双精度矢量的平方和平方根.例如给出:
vector<double> Array1(10,2.0);
vector<double> Array2(10,2.0);
for(unsigned int i=0; i<Array1.size(); i++)
Array1[i] = sqrt(Array1[i]);
for(unsigned int i=0; i<Array2.size(); i++)
Array2[i] = Array2[i] * Array2[i];
Run Code Online (Sandbox Code Playgroud)
有没有办法使用STL函数,如变换?也许有一个内置的sqrt函数作用于数组?