📄 trellispathcollection.h.svn-base
字号:
// $Id$/***********************************************************************Moses - factored phrase-based language decoderCopyright (C) 2006 University of EdinburghThis library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA***********************************************************************/#pragma once#include <set>#include <iostream>#include "TrellisPath.h"struct CompareTrellisPathCollection{ bool operator()(const TrellisPath* pathA, const TrellisPath* pathB) const { return (pathA->GetTotalScore() > pathB->GetTotalScore()); }};/** priority queue used in Manager to store list of contenders for N-Best list. * Stored in order of total score so that the best path can just be popped from the top */class TrellisPathCollection{ friend std::ostream& operator<<(std::ostream&, const TrellisPathCollection&);protected: typedef std::multiset<TrellisPath*, CompareTrellisPathCollection> CollectionType; CollectionType m_collection;public: //iterator begin() { return m_collection.begin(); } TrellisPath *pop() { TrellisPath *top = *m_collection.begin(); // Detach m_collection.erase(m_collection.begin()); return top; } ~TrellisPathCollection() { // clean up RemoveAllInColl(m_collection); } //! add a new entry into collection void Add(TrellisPath *trellisPath) { m_collection.insert(trellisPath); } size_t GetSize() const { return m_collection.size(); } void Prune(size_t newSize);};inline std::ostream& operator<<(std::ostream& out, const TrellisPathCollection& pathColl){ TrellisPathCollection::CollectionType::const_iterator iter; for (iter = pathColl.m_collection.begin() ; iter != pathColl.m_collection.end() ; ++iter) { const TrellisPath &path = **iter; out << path << std::endl; } return out;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -