我有一个小函数,它应该根据机器学习算法进行预测.该函数无法正常工作,因此我将一个print语句放入检查值,突然间它开始工作了.当我注释掉打印行时,它会再次停止工作.有什么我不知道为什么会发生这种情况?
int makePrediction( const InstanceT & instance, bool biased ){
double dotProduct = ( biased ? instance * _weights + _bias : instance * _weights );
std::cout << "dotProduct = " << dotProduct << std::endl;
return ( dotProduct > 0 ? 1 : -1 );
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因产生了不同的结果
int makePrediction( const InstanceT & instance, bool biased ){
double dotProduct = ( biased ? instance * _weights + _bias : instance * _weights );
return ( dotProduct > 0 ? 1 : …Run Code Online (Sandbox Code Playgroud) 我在一个定义为的类中有一个map结构std::map<const char*, double>,在构造函数中,我添加了三个全部设置为零的元素,它们的键为"MR_WP","MR_WM"和"MR_WC".我还有几个访问函数到地图,但在执行访问之前,有一个函数检查以确保键实际存在于地图中.
基本上,我有一些说法:
if ( map.find(_key) == map.end() ) throw "error"
Run Code Online (Sandbox Code Playgroud)
当我将const char*字符串传递给访问函数(如getValue("MR_WP"))时,没有错误.
但是,如果我这样做:
std::string str = "MR_WP";
double value = map.getValue( str.c_str() );
-or-
std::string str = "MR_WP";
double value = map.getValue( str.data() );
Run Code Online (Sandbox Code Playgroud)
然后抛出错误.我尝试了两个函数,因为我认为错误可能是由null字符引起的.我需要这样做的原因是因为我想在运行时获取密钥的最后一个字母,例如:
std::string type = getType();
std::string str = "MR_W" + type;
double value = map.getValue( str.c_str() ); //or with str.data()
Run Code Online (Sandbox Code Playgroud)