我有一个名为"UltrasoundTemplate"的类。这些UltrasoundTemplate对象包含一个int参数,显示它们何时被定义(类似于时间戳)。我还有一个名为"UltrasoundTarget"的类,其中包含一个UltrasoundTemplate向量。我使用push_back(ultrasoundTemplate)将UltrasoundTemplates添加到向量中。
作为一个例子:我在卷(0)中定义了Template1,在卷(70)中定义了Template2,在卷(40)中定义了Template3。现在的顺序是(Template1,Template2,Template3),但我希望它变成(Template1,Template3,Template2)。但是这段代码没有实现这个目标。
如果有信息缺失,请告诉我,我会提供更多的代码。
非常感谢。
现在我想按时间戳的顺序而不是它们加入向量的顺序对向量进行排序。
我在谷歌上找到了很多答案,它们都显示给我相同的解决方案,但显然我仍然做错了些什么。以下是我认为寻求解决方案所必需的代码片段:
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;
}
}
作为一个例子:我在卷(0)中定义了Template1,在卷(70)中定义了Template2,在卷(40)中定义了Template3。现在的顺序是(Template1,Template2,Template3),但我希望它变成(Template1,Template3,Template2)。但是这段代码没有实现这个目标。
如果有信息缺失,请告诉我,我会提供更多的代码。
非常感谢。
volume_
了? - Katniss