本文整理汇总了C++中tr1::shared_ptr::getName方法的典型用法代码示例。如果您正苦于以下问题:C++ shared_ptr::getName方法的具体用法?C++ shared_ptr::getName怎么用?C++ shared_ptr::getName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tr1::shared_ptr
的用法示例。
在下文中一共展示了shared_ptr::getName方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
// Multiplies number by this and returns the product
//
// Parameters:
// shared_ptr<AbstractNumber> number number being multiplied
//
// Returns:
// shared_ptr<AbstractNumber> resulting product of multiplication
tr1::shared_ptr<AbstractNumber> Exponent::multiply(tr1::shared_ptr<AbstractNumber> number){
// Checks for simplification if both exponents
number = number->simplify();
if(number->getName() == "Exponent"){
tr1::shared_ptr<Exponent> givenNumber = tr1::static_pointer_cast<Exponent>(number);
if(abs(givenNumber->getValue("base")->toDouble() - base->toDouble()) < 0.000001){
tr1::shared_ptr<AbstractNumber> r(new Exponent(base, power->add(givenNumber->getValue("power")), this->calcSign(number)));
return r;
}
else if (number->getName() == "Radical") {
if (abs(number->getValue("value")->toDouble() - base->toDouble()) < 0.000001 )
{
std::vector< tr1::shared_ptr<AbstractNumber> > SumVector;
tr1::shared_ptr<AbstractNumber> one(new SmartInteger(1));
tr1::shared_ptr<AbstractNumber> invertedRoot(new MultExpression(one, number->getValue("root")->noSign(), number->getValue("root")->getSign()));
SumVector.push_back(power);
SumVector.push_back(invertedRoot);
tr1::shared_ptr<AbstractNumber> power(new SumExpression(SumVector));
tr1::shared_ptr<AbstractNumber> output(new Exponent(number->getValue("value")->noSign(), power, sign));
return output;
}
}
else{
tr1::shared_ptr<AbstractNumber> me(new Exponent(base, power, sign));
tr1::shared_ptr<AbstractNumber> r(new MultExpression(me, number, this->calcSign(number)));
return r;
}
}
// Checks for simplification if number = base
// Adds 1 to exponent
else if(abs(number->toDouble() - base->toDouble()) < 0.000001 ){
tr1::shared_ptr<AbstractNumber> c(new SmartInteger(1));
tr1::shared_ptr<AbstractNumber> r(new Exponent(base, power->add(c), this->calcSign(number)));
return r;
}
else if(number->getName() == "SumExpression" || number->getName() == "MultExpression")
{
return number->multiply(shared_from_this());
}
vector< tr1::shared_ptr<AbstractNumber> > MultVector;
tr1::shared_ptr<AbstractNumber> me(new Exponent(base, power, sign));
MultVector.push_back(me);
MultVector.push_back(number);
tr1::shared_ptr<AbstractNumber> r(new MultExpression(MultVector, '+'));
return r;
}
示例2: if
tr1::shared_ptr<AbstractNumber> E::add(tr1::shared_ptr<AbstractNumber>number){
if (number -> getName() == "E")
{
if (number -> getSign() == '+' && getSign() == '+')
{
vector<tr1::shared_ptr<AbstractNumber> > M;
tr1::shared_ptr<AbstractNumber> two(new SmartInteger(2));
M.push_back(two);
M.push_back(shared_from_this());
tr1::shared_ptr<AbstractNumber> output(new MultExpression(M, '+'));
return output;
}
else if (number -> getSign() == '-' && getSign() == '-')
{
vector<tr1::shared_ptr<AbstractNumber> > N;
tr1::shared_ptr<AbstractNumber> twoN(new SmartInteger(-2));
N.push_back(twoN);
tr1::shared_ptr<AbstractNumber> me(new E());
N.push_back(me);
tr1::shared_ptr<AbstractNumber> output1(new MultExpression(N, '+'));
return output1;
}
else
{
tr1::shared_ptr<AbstractNumber> zero(new SmartInteger(0));
return zero;
}
}
else if(number->getName() == "MultExpression" || number->getName() == "SumExpression")
{
return number->add(shared_from_this());
}
vector<tr1::shared_ptr<AbstractNumber> > N;
N.push_back(number);
N.push_back(shared_from_this());
tr1::shared_ptr<AbstractNumber> output1(new SumExpression(N));
return output1;
}
示例3: multiply
// Divides this by number and returns the product
//
// Parameters:
// shared_ptr<AbstractNumber> number divisor
//
// Returns:
// shared_ptr<AbstractNumber> resulting quotient of division
tr1::shared_ptr<AbstractNumber> Exponent::divide(tr1::shared_ptr<AbstractNumber>number){
// Reverses sign if exponent and multiplies
if(number->getName()=="Exponent"){
tr1::shared_ptr<Exponent> givenNumber = tr1::static_pointer_cast<Exponent>(number);
if(givenNumber->getSign()=='-'){
tr1::shared_ptr<AbstractNumber> r(new Exponent(givenNumber->getValue("base"), givenNumber->getValue("power")));
return multiply(r);
}
else{
tr1::shared_ptr<AbstractNumber> nOne(new SmartInteger(-1));
tr1::shared_ptr<AbstractNumber> newPower = givenNumber->getValue("power")->multiply(nOne);
tr1::shared_ptr<AbstractNumber> r(new Exponent(givenNumber->getValue("base"), newPower, givenNumber->getSign()));
return multiply(r);
}
}
// Subtracts 1 from power if base = number
else if(number->toDouble() == base->toDouble()){
tr1::shared_ptr<AbstractNumber> c(new SmartInteger(-1));
tr1::shared_ptr<AbstractNumber> r(new Exponent(base, power->add(c), this->calcSign(number)));
return r;
}
else if(number->getName() == "MultExpression")
{
tr1::shared_ptr<MultExpression> MultE = tr1::static_pointer_cast<MultExpression>(number);
vector<tr1::shared_ptr<AbstractNumber> > MultENum = MultE->getNumerator();
vector<tr1::shared_ptr<AbstractNumber> > MultEDem = MultE->getDenominator();
if (MultEDem.size() == 0)
{
tr1::shared_ptr<AbstractNumber> one(new SmartInteger(1));
MultEDem.push_back(one);
}
tr1::shared_ptr<AbstractNumber> reversedMultE(new MultExpression(MultEDem, MultENum, '+'));
return reversedMultE->multiply(shared_from_this());
}
vector< tr1::shared_ptr<AbstractNumber> > NumVector;
tr1::shared_ptr<AbstractNumber> me(new Exponent(base, power, sign));
NumVector.push_back(me);
vector< tr1::shared_ptr<AbstractNumber> > DenVector;
DenVector.push_back(number);
tr1::shared_ptr<AbstractNumber> r(new MultExpression(NumVector, DenVector, this->calcSign(number)));
return r;
}