読者です 読者をやめる 読者になる 読者になる

struct などのオブジェクト型でできたvectorのソート方法

C

std::sort( v.begin(), v.end() ) ではなく、std::sort( v.begin(), v.end(), func ) を使う。

#include <stdio.h>
#include <vector>
#include <iostream>

using namespace std;

struct DOMAINS
{
	char szDomain[512];
};

bool func(const DOMAINS& x, const DOMAINS& y){
	return ( strcmp( x.szDomain, y.szDomain ) < 0 );
}

int main(){
	vector <DOMAINS> vectDomains;
	
	DOMAINS dm1, dm2, dm3;
	strcpy( dm1.szDomain, "bbb.com" );
	strcpy( dm2.szDomain, "azzzz.co.jp" );
	strcpy( dm3.szDomain, "cc.jp" );
	vectDomains.push_back( dm1 );
	vectDomains.push_back( dm2 );
	vectDomains.push_back( dm3 );
	
	std::sort(vectDomains.begin(), vectDomains.end(), func);
	
	for(int i=0; i<3; i++){
		printf( "%s", vectDomains[i].szDomain );
	}
	return 0;
}