「UltrasoundTemplate」というクラスがあります。これらの UltrasoundTemplate オブジェクトには int パラメーターが含まれており、いつ定義されたかを示します (タイム スタンプのようなもの)。UltrasoundTemplate のベクトルを含む「UltrasoundTarget」というクラスがあります。push_back(ultrasoundTemplate) を使用して UltrasoundTemplates をベクターに追加します。
ここで、ベクトルに追加した順序ではなく、タイム スタンプの順序でベクトルを並べ替えたいと思います。
私はグーグルで多くの答えを見つけましたが、それらはすべて同じ解決策を示していますが、明らかに私はまだ何か間違ったことをしています。解決策を見つけるために必要だと思うコードスニペットを次に示します。
超音波テンプレート.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) にしたいです。しかし、このコードはそれを行っていません。
情報が不足している場合は、教えてください。さらにコードを提供します。
どうもありがとう。