// sort algorithm example #include // std::cout #include // std::sort #include // std::vector #include // memcpy bool myfunction (int i,int j) { return (ij); }//降序排列 struct myclass { bool operator() (int i,int j) { return (i>j);} } myobject; void printfVector(std::vector myvector) { for (std::vector::iterator it=myvector.begin(); it!=myvector.end(); ++it)//输出 std::cout << ' ' << *it; std::cout << '\n'; } int main () { int myints[8] = {32,71,12,45,26,80,53,33}; int sort[8]; std::vector myvector (myints, myints+8); // 32 71 12 45 26 80 53 33 memcpy(sort, myints, sizeof(myints)); std::vector vector_sort (sort, sort+8); std::cout << "测试数组:"; printfVector(myvector); memcpy(sort, myints, sizeof(myints)); std::cout << "默认排序前四个元素(<):"; printfVector(myvector); std::sort (vector_sort.begin(), vector_sort.begin()+4); //(12 32 45 71)26 80 53 33 std::cout << "排序结果:"; printfVector(myvector); memcpy(sort, myints, sizeof(myints)); std::cout << "默认排序后四个元素(<):"; printfVector(myvector); std::sort (vector_sort.begin()+4, vector_sort.end()); std::cout << "排序结果:"; printfVector(myvector); // using default comparison (operator <): memcpy(sort, myints, sizeof(myints)); std::cout << "默认比较(<):"; printfVector(myvector); std::sort (vector_sort.begin(), vector_sort.end()); std::cout << "排序结果:"; printfVector(myvector); // using function as comp memcpy(sort, myints, sizeof(myints)); std::cout << "用fuction进行比较排序 (<):"; printfVector(myvector); std::sort (vector_sort.begin(), vector_sort.end(), myfunction); // 12 32 45 71(26 33 53 80) //std::sort (myints,myints+8,myfunction);不用vector的用法 std::cout << "排序结果:"; printfVector(myvector); // using function2 as comp memcpy(sort, myints, sizeof(myints)); std::cout << "用fuction2进行比较排序 (>):"; printfVector(myvector); std::sort (vector_sort.begin(), vector_sort.end(), myfunction2); //std::sort (myints,myints+8,myfunction);不用vector的用法 std::cout << "排序结果:"; printfVector(myvector); // using object as comp memcpy(sort, myints, sizeof(myints)); std::cout << "用object进行比较排序 (>):"; printfVector(myvector); std::sort (vector_sort.begin(), vector_sort.end(), myobject); //(12 26 32 33 45 53 71 80) // print out content: std::cout << "排序结果:"; printfVector(myvector); std::cout << "不用vector的用法:"; printfVector(myvector); memcpy(sort, myints, sizeof(myints)); // std::sort (myvector.begin(), myvector.end(), myfunction); std::sort (myints,myints+8,myfunction); //不用vector的用法 std::cout << "排序结果:"; // printfVector(myvector); for(int i=0;i<9;i++) { std::cout << ' ' << myints[i]; } std::cout << '\n'; return 0; }