[C/C++]_[Object-C]_[数组排序比较]
2020-05-10 04:09
1316 查看
场景
-
在
macOS
下Objective-C
的数组是如何排序的? -
C++
的数组std::vector
如何排序呢?C++
和Objective-C
的数组排序有什么不同呢?
说明
Objective-C
的数组排序是以方法的形式来提供的,可以说很方便。而C++
是以算法库来提供的, 不方便, 只能说优点就是效率高和内存利用率高. 因为C++
的数组排序不会创建新数组.
例子
// // main.m // TestObjc2 // // Created by sai on 6/17/17. // #import <Foundation/Foundation.h> #include <vector> #include <string> #include <algorithm> #include <iostream> #include <string.h> void TestCppArraySort() { NSLog(@"TestCppArraySort"); std::vector<std::string> array; array.push_back("a"); array.push_back("c"); array.push_back("d"); array.push_back("e"); array.push_back("C"); // macOS: strcasecmp // Windows: istrcmp std::sort(array.begin(), array.end(), [](const std::string& obj1,const std::string& obj2)->bool{ return strcasecmp(obj1.c_str(),obj2.c_str()) < 0; }); for (NSInteger i = 0; i<array.size(); ++i) { std::cout << array[i] << std::endl; } std::cout << strcmp("a","b") << std::endl; } void TestObjectiveCArraySort() { NSLog(@"TestObjectiveCArraySort"); NSMutableArray* array = [[NSMutableArray new] autorelease]; [array addObject:@"b"]; [array addObject:@"a"]; [array addObject:@"d"]; [array addObject:@"c"]; [array addObject:@"C"]; NSArray* arrayNew = [array sortedArrayUsingComparator:^NSComparisonResult(NSString* obj1, NSString* obj2) { return [obj1 compare:obj2 options:NSCaseInsensitiveSearch]; }]; for (NSInteger i = 0; i<[arrayNew count]; ++i) { NSLog(@"%@",[arrayNew objectAtIndex:i]); } NSLog(@"%ld",[@"a" compare:@"b"]); } int main(int argc, const char * argv[]) { TestObjectiveCArraySort(); TestCppArraySort(); return 0; }
输出
2019-09-16 16:06:18.857 TestObjc2[1583:303] TestObjectiveCArraySort 2019-09-16 16:06:18.882 TestObjc2[1583:303] a 2019-09-16 16:06:18.883 TestObjc2[1583:303] b 2019-09-16 16:06:18.883 TestObjc2[1583:303] c 2019-09-16 16:06:18.884 TestObjc2[1583:303] C 2019-09-16 16:06:18.885 TestObjc2[1583:303] d 2019-09-16 16:06:18.885 TestObjc2[1583:303] -1 2019-09-16 16:06:18.886 TestObjc2[1583:303] TestCppArraySort a c C d e -1
参考
case-insensitive-string-comparison-in-c
了解本专栏 订阅专栏 解锁全文 infoworld 博客专家 原创文章 347获赞 126访问量 120万+ 关注 他的留言板相关文章推荐
- C#、Java、C、C++初始化数组过程和比较
- c++ 计蒜客第22题 排序后数组删除重复数字
- C#基础之数组排序,对象大小比较
- C++sort()给结构体数组排序
- C++ 先对数组排序,在进行折半查找
- 范例-数组排序-比较排序-选择排序升级版:优先级队列
- C++ 数组array与vector的比较
- C/C++ 数组排序(平均时间复杂度 O(nlogn))归并、快速、堆、希尔之快速排序
- javascript 对象数组根据对象object key的值排序
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题
- C++整型数组排序
- 数组排序方法的性能比较(4):LINQ方式的Array排序
- 2014秋C++第13周项目4参考-数组的排序
- 数组比较,查找,排序
- 2013级C++第17周项目【项目3-数组的排序】
- 待排序的最短子数组长度(C++版)
- C++中字符串的比较与排序
- [C++]LeetCode: 128 Largest Number (自定义比较函数排序)
- C++ 数组array与vector的比较
- Object-C,NSArraySortTest,数组排序3种方式