我有一個名爲「UltrasoundTemplate」的類。這些UltrasoundTemplate對象包含一個int參數,該參數顯示何時被定義(類似於時間戳)。我有一個名爲「UltrasoundTarget」的類,其中包含UltrasoundTemplate的矢量。 我用push_back(ultrasoundTemplate)向矢量添加UltrasoundTemplates。排序一個類的向量
現在我想按照時間戳的順序排列矢量,而不是將它們添加到矢量中的順序。
我在谷歌中找到了很多答案,這些答案都向我展示了相同的解決方案,但顯然我仍然在做錯的事情。下面是代碼片段,我認爲是有必要尋找一個解決方案:
ultrasoundTemplate.h
class UltrasoundTemplate
{
public:
UltrasoundTemplate(/*...*/);
int getVolumePos() { return volume_; }
private:
int volume_;
};
ultrasoundTarget.h
//the sort algorithm
struct MyTemplateSort {
bool operator() (UltrasoundTemplate t1, UltrasoundTemplate t2){
int it1 = t1.getVolumePos();
int it2 = t2.getVolumePos();
if (it1 < it2)
return true;
return false;
}
};
class UltrasoundTarget
{
public:
UltrasoundTarget(/*...*/);
vector<UltrasoundTemplate> getTemplates() { return USTemplateVector_; }
private:
vector<UltrasoundTemplate> USTemplateVector_;
};
FMainWindow.cpp
void FMainWindow::match_slot()
{
int i;
//here I get the name of the target I'm looking for
QTreeWidgetItem *item = targetInfoWidget_->treeWidget->currentItem();
int index = targetInfoWidget_->treeWidget->indexOfTopLevelItem(item);
QString itemToAppendName = item->text(0);
for(i = 0; i < USTargetVector.size(); i++){
if(USTargetVector.at(i).getName() == itemToAppendName) {
//here I try to sort
MyTemplateSort tmpltSrt;
std::sort(USTargetVector.at(i).getTemplates().begin(),
USTargetVector.at(i).getTemplates().end(), tmpltSrt);
break;
}
}
作爲例如:我在Volume(0)中定義Template1,在Volume(70)中定義Template2,在Volume中定義Template3(40 )。現在的順序是(Template1,Template2,Template3),但我希望它是(Template1,Template3,Template2)。但是這段代碼並沒有這樣做。
如果缺少信息,請告訴我,我會提供更多的代碼。
非常感謝。
您忘了指定'volume_',也許? – Katniss