各位高手请给一帮助我现在相对如下表达示求值
Local_i_j=log10(1+SourceMatrix[row][col])/log10(2);
但是笨人不会用这个log10()函数,不知道如何去调用这个函数,上式总是报错在valarray文件中,我是这样引用的
#include <valarray>
typedef valarray<float> Data_Var;
Data_Var VarValue0(1);
VarValue[0]=1+SourceMatrix[row][col];
Data_Var VarValue1(1);
VarValue1[0]=2;
Local_i_j=log10(VarValue0)/log10(VarValue1);但是总是出错,请高手给以指点,将上面的错误之处改正一下,谢谢初学者

解决方案 »

  1.   

    #include <math.h>
    #include <valarray>
    using namespace std;typedef valarray<float> Data_Var;
    int main(int argc, char* argv[])
    {
    Data_Var Local_i_j;
    Data_Var VarValue0(1);
    // VarValue0=1+SourceMatrix[row][col];
    Data_Var VarValue1(1);
    VarValue1[0]=2;
    Local_i_j=log10(VarValue0)/log10(VarValue1);
    return 0;
    }
      

  2.   

    你的程序不全,我就是简单做了个编译。可能是你没有包含log10的头文件的问题吧,#include <math.h>
      

  3.   

    这伟大哥,头文件我都包含了,但是我把你的也加进去了,不行老是在valarray的头文件中出错,请高手指点
    下面试我的程序段
    void CharacterWeightMatrix()
    {
    int df_i=0;         //出现词i的文档数
    Data_Var Local_i_j;//词i在文档j中的权重
    Data_Var Global_i; //词i在训练集中的权重
    int N1,N2;

    N1=SourceMatrix.GetSize(); //返回矩阵的行数
    N2=SourceMatrix[N1-1].GetSize();//返回矩阵的列数 for (int row=0;row<N1;row++)
    {
    for (int col1=0;col1<N2;col1++)
    {
    if (SourceMatrix[row][col1] !=0)
    df_i++;//计算出现词i的文档数
    }
    for (int col=0;col<N2;col++)
    {
    /*计算log2(1+wf_i_j) 即log2(1+sourceMatrix[i][j]*/
    Data_Var VarValue0;
    VarValue0=1+SourceMatrix[row][col];
    Data_Var VarValue1;
    VarValue1=2;
    Local_i_j=log10(VarValue0)/log10(VarValue1);

    /*计算log2((N/df_i)+1)*/
    Data_Var VarValue2;
    Data_Var VarValue3;
    VarValue2=(N2/df_i)+1;
    VarValue3=2;
    Global_i=log10(VarValue2)/log10(VarValue3);
    /*计算词的权重*/
    WordWeightMatrix[row][col]=Local_i_j*Global_i;
    df_i=0;
    }
    }
    }
      

  4.   

    d:\microsoft visual studio\vc98\include\valarray(104) : warning C4003: not enough actual parameters for macro 'min'
    d:\microsoft visual studio\vc98\include\valarray(110) : warning C4003: not enough actual parameters for macro 'max'
    d:\microsoft visual studio\vc98\include\valarray(104) : error C2059: syntax error : 'function-style cast'
            d:\microsoft visual studio\vc98\include\valarray(167) : see reference to class template instantiation 'std::valarray<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(104) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
            d:\microsoft visual studio\vc98\include\valarray(167) : see reference to class template instantiation 'std::valarray<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2143: syntax error : missing ')' before '}'
            d:\microsoft visual studio\vc98\include\valarray(167) : see reference to class template instantiation 'std::valarray<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2059: syntax error : ')'
            d:\microsoft visual studio\vc98\include\valarray(167) : see reference to class template instantiation 'std::valarray<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2143: syntax error : missing ';' before '}'
            d:\microsoft visual studio\vc98\include\valarray(167) : see reference to class template instantiation 'std::valarray<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2238: unexpected token(s) preceding ';'
            d:\microsoft visual studio\vc98\include\valarray(167) : see reference to class template instantiation 'std::valarray<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(110) : error C2146: syntax error : missing ';' before identifier '_Ty'
            d:\microsoft visual studio\vc98\include\valarray(167) : see reference to class template instantiation 'std::valarray<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(104) : error C2629: unexpected 'unsigned int ('
            d:\microsoft visual studio\vc98\include\valarray(648) : see reference to class template instantiation 'std::valarray<unsigned int>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(104) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
            d:\microsoft visual studio\vc98\include\valarray(648) : see reference to class template instantiation 'std::valarray<unsigned int>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2143: syntax error : missing ')' before '}'
            d:\microsoft visual studio\vc98\include\valarray(648) : see reference to class template instantiation 'std::valarray<unsigned int>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2059: syntax error : ')'
            d:\microsoft visual studio\vc98\include\valarray(648) : see reference to class template instantiation 'std::valarray<unsigned int>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(110) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
            d:\microsoft visual studio\vc98\include\valarray(648) : see reference to class template instantiation 'std::valarray<unsigned int>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(115) : error C2143: syntax error : missing ')' before '}'
            d:\microsoft visual studio\vc98\include\valarray(648) : see reference to class template instantiation 'std::valarray<unsigned int>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(115) : error C2059: syntax error : ')'
            d:\microsoft visual studio\vc98\include\valarray(648) : see reference to class template instantiation 'std::valarray<unsigned int>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(115) : error C2143: syntax error : missing ';' before '}'
            d:\microsoft visual studio\vc98\include\valarray(648) : see reference to class template instantiation 'std::valarray<unsigned int>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(115) : error C2238: unexpected token(s) preceding ';'
            d:\microsoft visual studio\vc98\include\valarray(648) : see reference to class template instantiation 'std::valarray<unsigned int>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(116) : error C2146: syntax error : missing ';' before identifier 'valarray'
            d:\microsoft visual studio\vc98\include\valarray(648) : see reference to class template instantiation 'std::valarray<unsigned int>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(104) : error C2629: unexpected 'bool ('
            d:\microsoft visual studio\vc98\include\valarray(754) : see reference to class template instantiation 'std::valarray<bool>' being compiled
            d:\microsoft visual studio\vc98\include\valarray(756) : see reference to class template instantiation 'std::mask_array<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(104) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
      

  5.   

    d:\microsoft visual studio\vc98\include\valarray(754) : see reference to class template instantiation 'std::valarray<bool>' being compiled
            d:\microsoft visual studio\vc98\include\valarray(756) : see reference to class template instantiation 'std::mask_array<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2143: syntax error : missing ')' before '}'
            d:\microsoft visual studio\vc98\include\valarray(754) : see reference to class template instantiation 'std::valarray<bool>' being compiled
            d:\microsoft visual studio\vc98\include\valarray(756) : see reference to class template instantiation 'std::mask_array<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2059: syntax error : ')'
            d:\microsoft visual studio\vc98\include\valarray(754) : see reference to class template instantiation 'std::valarray<bool>' being compiled
            d:\microsoft visual studio\vc98\include\valarray(756) : see reference to class template instantiation 'std::mask_array<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2143: syntax error : missing ';' before '}'
            d:\microsoft visual studio\vc98\include\valarray(754) : see reference to class template instantiation 'std::valarray<bool>' being compiled
            d:\microsoft visual studio\vc98\include\valarray(756) : see reference to class template instantiation 'std::mask_array<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2238: unexpected token(s) preceding ';'
            d:\microsoft visual studio\vc98\include\valarray(754) : see reference to class template instantiation 'std::valarray<bool>' being compiled
            d:\microsoft visual studio\vc98\include\valarray(756) : see reference to class template instantiation 'std::mask_array<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(110) : error C2146: syntax error : missing ';' before identifier '_Ty'
            d:\microsoft visual studio\vc98\include\valarray(754) : see reference to class template instantiation 'std::valarray<bool>' being compiled
            d:\microsoft visual studio\vc98\include\valarray(756) : see reference to class template instantiation 'std::mask_array<_Ty>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(104) : error C2629: unexpected 'float ('
            E:\索引软件源程序\Index\IndexDlg.cpp(757) : see reference to class template instantiation 'std::valarray<float>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(104) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
            E:\索引软件源程序\Index\IndexDlg.cpp(757) : see reference to class template instantiation 'std::valarray<float>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2143: syntax error : missing ')' before '}'
            E:\索引软件源程序\Index\IndexDlg.cpp(757) : see reference to class template instantiation 'std::valarray<float>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(109) : error C2059: syntax error : ')'
            E:\索引软件源程序\Index\IndexDlg.cpp(757) : see reference to class template instantiation 'std::valarray<float>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(110) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
            E:\索引软件源程序\Index\IndexDlg.cpp(757) : see reference to class template instantiation 'std::valarray<float>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(115) : error C2143: syntax error : missing ')' before '}'
            E:\索引软件源程序\Index\IndexDlg.cpp(757) : see reference to class template instantiation 'std::valarray<float>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(115) : error C2059: syntax error : ')'
            E:\索引软件源程序\Index\IndexDlg.cpp(757) : see reference to class template instantiation 'std::valarray<float>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(115) : error C2143: syntax error : missing ';' before '}'
            E:\索引软件源程序\Index\IndexDlg.cpp(757) : see reference to class template instantiation 'std::valarray<float>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(115) : error C2238: unexpected token(s) preceding ';'
            E:\索引软件源程序\Index\IndexDlg.cpp(757) : see reference to class template instantiation 'std::valarray<float>' being compiled
    d:\microsoft visual studio\vc98\include\valarray(116) : error C2146: syntax error : missing ';' before identifier 'valarray'
            E:\索引软件源程序\Index\IndexDlg.cpp(757) : see reference to class template instantiation 'std::valarray<float>' being compiled
    E:\索引软件源程序\Index\IndexDlg.cpp(787) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class std::valarray<float>' (or there is no acceptable conversion)
    E:\索引软件源程序\Index\IndexDlg.cpp(797) : error C2065: 'File' : undeclared identifier
    E:\索引软件源程序\Index\IndexDlg.cpp(797) : error C2065: 'file_name' : undeclared identifier
    E:\索引软件源程序\Index\IndexDlg.cpp(797) : warning C4552: '*' : operator has no effect; expected operator with side-effect
    E:\索引软件源程序\Index\IndexDlg.cpp(799) : error C2065: 'filenme' : undeclared identifier
    E:\索引软件源程序\Index\IndexDlg.cpp(829) : error C2374: 'i' : redefinition; multiple initialization
    E:\索引软件源程序\Index\IndexDlg.cpp(824) : see declaration of 'i'
    Error executing cl.exe.Index.exe - 39 error(s), 3 warning(s)