bool compare(int a,int b)
{
return a>b;
}
int main(){
int a[]={7,2,1,9,3,7,8,5,1,2};
sort(a,a+10,compare);
}
//ค่าในarray a จะถูกเรียงลำดับจากมากไปน้อย
หากเป็น data structer ไม่ว่าจะเป็น class หรือ struct ก็สามารถ กำหนดได้เหมือนกัน
#include<stdio.h>
#include<algorithm>
using namespace std;
struct item{
int value;
float floating;
};
bool compare(struct item a,struct item b)
{
return a.value<b .value;
}
int main(){
int i;
struct item box[10];
for(i=0;i<10;i++){
scanf("%d %f",&box[i].value,&box[i].floating);
}
sort(box,box+10,compare);
// จะเรียงลำดับ array box จากน้อยไปมาก ตามค่าของ valu
}
for(i=0;i<10;i++){
printf("\n%d %f",box[i].value,box[i].floating);
}
vectorint vex;
sort(vex.begin(),vex.end());
//หรือแม้แต่ vector ที่เก็บข้อมูลเป็น node หรือ เป็น class ก็สามารถ ทำได้แต่ต้องสร้าง function compare ให้
ตัวอย่างเต็ม เพื่อการนำไปใช้
#include<stdio.h>
#include<algorithm>
using namespace std;
bool compare(int a,int b)
{
return a>b;
}
int main(){
int a[]={7,2,1,9,3,7,8,5,1,2};
sort(a,a+10,compare);
int i;
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
}
STL คือชุดรวม คำสั่ง/algortihm/โครงสร้างที่เราใช้กันอยู่บ่อยๆนะครับ เพื่อความสะดวกในการเขียน STL นั้นเป็นของ C++ ย้ำ C++ ไม่ใช่ C ฉะนั้น C จะใช้ไม่ได้แน่นอนครับ
คำถาม : ทำไมต้องใช้ STL
ตอบ : สมมุติว่าคุณกำลังเขียนโปรแกรมหนึ่งอยู่ซึ่งมีเวลาจำกัด คุณจะเป็นจะต้องใช้ Red-black tree แต่ด้วยอัลกอริทึมที่ยาวเหยียด ของ Red-black tree คุณคงจะทำไม่ทันแน่ๆ ฉะนั้นทางออกของคุณคือใช้คำสั่งสำเร็จรูป หรือ STL นั่นเอง
วิธีใช้ STL คือ include header เข้ามาโดยไม่ต้องใส่นามสกุล เช่น #include<algorithm>