我有一个名为“UltrasoundTemplate”的课程。这些 UltrasoundTemplate 对象包含一个 int 参数,该参数显示它们的定义时间(类似于时间戳)。我有一个名为“UltrasoundTarget”的类,其中包含 UltrasoundTemplate 的向量。我使用 push_back(ultrasoundTemplate) 将 UltrasoundTemplates 添加到向量中。
现在我想按时间戳的顺序对向量进行排序,而不是按我将它们添加到向量中的顺序。
我在 google 中找到了很多答案,它们都向我展示了相同的解决方案,但显然我仍然做错了什么。以下是我认为找到解决方案所必需的代码片段:
超声波模板.h
class UltrasoundTemplate
{
public:
UltrasoundTemplate(/*...*/);
int getVolumePos() { return volume_; }
private:
int volume_;
};
超声目标.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(40) 中定义 Template3。现在的顺序是 (Template1, Template2, Template3) 但我希望它是 (Template1, Template3, Template2)。但是这段代码没有这样做。
如果缺少信息,请告诉我,我会提供更多代码。
非常感谢。