动态链接库里的函数为何这么慢?
听说c++的效率很高的,可是我的函数为何速度很慢,是我的代码写的不行吗?
请高手检查修改!!!
#include<string>
#include<vector>
#include<sstream>
using namespace std;
string WX(string b1,string b2) {
if((b1+b2=="金水")||(b1+b2=="木火")||(b1+b2=="水木")||(b1+b2=="火土")||(b1+b2=="土金"))
return "SY";
else if((b1+b2=="金土")||(b1+b2=="木水")||(b1+b2=="水金")||(b1+b2=="火木")||(b1+b2=="土火"))
return "SZ";
else if((b1+b2=="金木")||(b1+b2=="木土")||(b1+b2=="水火")||(b1+b2=="火金")||(b1+b2=="土水"))
return "KY";
else if((b1+b2=="金火")||(b1+b2=="木金")||(b1+b2=="水土")||(b1+b2=="火水")||(b1+b2=="土木"))
return "KZ";
else if((b1+b2=="金金")||(b1+b2=="木木")||(b1+b2=="水水")||(b1+b2=="火火")||(b1+b2=="土土"))
return "TT";
else
return "";
}
string FH1(vector<string> c1,vector<string>c2,vector<string>f4){
string n,o;
int z=0;
vector<string>::reverse_iterator p1=c1.rbegin();
vector<string>::reverse_iterator p2=c2.rbegin();
do
{
n=(WX(*(p1+1),*p2))[0];
o=(WX(*(p1+2),*(p2+1)))[0];
z++;
p1++;
p2++;
} while((n==o)&&(n!="T")&&(o!="T"));
vector<string>::iterator k=f4.begin();
ostringstream oss;
oss<<z;
string q=oss.str(),f2;
f2=(WX(*(p1+1),*p2))[0];
if(z<15)
return "";
else if(f2=="S"){
if(*p1=="金")
return q+*(k+0);
if(*p1=="木")
return q+*(k+1);
if(*p1=="水")
return q+*(k+2);
if(*p1=="火")
return q+*(k+3);
if(*p1=="土")
return q+*(k+4);
}
else if(f2=="K"){
if(*p1=="金")
return q+*(k+5);
if(*p1=="木")
return q+*(k+6);
if(*p1=="水")
return q+*(k+7);
if(*p1=="火")
return q+*(k+8);
if(*p1=="土")
return q+*(k+9);
}
}
[解决办法]
string WX(string b1,string b2)
string FH1(vector<string> c1,vector<string>c2,vector<string>f4)
改為
string WX(string const &b1,string const &b2)
string FH1(vector<string> const &c1,vector<string>const &c2,vector<string>const &f4)
這樣速度就上去了。