小编Max*_*Max的帖子

为什么打印变量会改变它的值?

我有一个小函数,它应该根据机器学习算法进行预测.该函数无法正常工作,因此我将一个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)

c++ printing cout stdout

5
推荐指数
1
解决办法
980
查看次数

string :: c_str()和string :: data()无法转换为const char*

我在一个定义为的类中有一个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)

c++

0
推荐指数
1
解决办法
482
查看次数

标签 统计

c++ ×2

cout ×1

printing ×1

stdout ×1