本文整理匯總了C++中SiteContainer::addSite方法的典型用法代碼示例。如果您正苦於以下問題:C++ SiteContainer::addSite方法的具體用法?C++ SiteContainer::addSite怎麽用?C++ SiteContainer::addSite使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類SiteContainer
的用法示例。
在下文中一共展示了SiteContainer::addSite方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: merge
void SiteContainerTools::merge(SiteContainer& seqCont1, const SiteContainer& seqCont2, bool leavePositionAsIs)
throw (AlphabetMismatchException, Exception)
{
if (seqCont1.getAlphabet()->getAlphabetType() != seqCont2.getAlphabet()->getAlphabetType())
throw AlphabetMismatchException("SiteContainerTools::merge.", seqCont1.getAlphabet(), seqCont2.getAlphabet());
vector<string> seqNames1 = seqCont1.getSequencesNames();
vector<string> seqNames2 = seqCont2.getSequencesNames();
const SiteContainer* seqCont2bis = 0;
bool del = false;
if (seqNames1 == seqNames2)
{
seqCont2bis = &seqCont2;
}
else
{
// We shall reorder sequences first:
SiteContainer* seqCont2ter = new VectorSiteContainer(seqCont2.getAlphabet());
SequenceContainerTools::getSelectedSequences(seqCont2, seqNames1, *seqCont2ter);
seqCont2bis = seqCont2ter;
del = true;
}
if (leavePositionAsIs)
{
for (size_t i = 0; i < seqCont2bis->getNumberOfSites(); i++)
{
seqCont1.addSite(seqCont2bis->getSite(i), false);
}
}
else
{
int offset = static_cast<int>(seqCont1.getNumberOfSites());
for (size_t i = 0; i < seqCont2bis->getNumberOfSites(); i++)
{
seqCont1.addSite(seqCont2bis->getSite(i), offset + seqCont2bis->getSite(i).getPosition(), false);
}
}
if (del)
delete seqCont2bis;
}