"UltrasoundTemplate"이라는 클래스가 있습니다. 이 UltrasoundTemplate 객체에는 int 매개 변수가 들어 있으며,이 매개 변수는 정의 된 위치 (타임 스탬프와 같은 것)를 표시합니다. 그리고 UltrasoundTemplate의 벡터를 포함하는 "UltrasoundTarget"이라는 클래스가 있습니다. push_back (ultrasoundTemplate)을 사용하여 UltrasoundTemplates를 벡터에 추가합니다.클래스의 벡터 정렬
이제 벡터에 추가 한 순서 대신 시간 스탬프 순서로 벡터를 정렬하고 싶습니다.
나는 구글에서 많은 해결책을 발견했는데, 모두 똑같은 해결책을 보여 주지만 분명히 나 역시 여전히 잘못된 것을하고있다. AS를
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