前言

	@interface NSArray<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>
@interface NSMutableArray<ObjectType> : NSArray<ObjectType>
  • 数组只能存储 OC 对象,不能存储 C 语言中的基本数据类型,也不能存储 nil 。

  • Xcode 7 对系统中常用的一系列容器类型都增加了泛型支持(),有了泛型后就可以指定容器类中对象的类型了。假如向泛型容器中加入错误的对象,编译器会报警告。

    	__covariant:协变性,子类型可以强转到父类型(里氏替换原则)。
    __contravariant:逆变性,父类型可以强转到子类型。
  • 不指定泛型类型的对象可以和任意泛型类型转化,但指定了泛型类型后,两个不同类型间是不可以强转的,假如你希望主动控制转化关系,就需要使用泛型的协变性和逆变性修饰符。

1、不可变数组 NSArray 的创建

	// 直接创建不可变数组
/*
数组成员是 id 类型,表示数组元素可以是任意的 oc 对象。
*/
NSArray *arr1 = @[@"bei", @"jing", @"huan", @"ying", @"nin"]; // 对象方法创建 NSArray *arr2 = [[NSArray alloc] init]; // 和 arr1 的地址不相同
NSArray *arr3 = [[NSArray alloc] initWithArray:arr1]; NSArray *arr4 = [[NSArray alloc] initWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil]; // 类方法创建 NSArray *arr5 = [NSArray array]; // 和 arr1 的地址不相同
NSArray *arr6 = [NSArray arrayWithArray:arr1]; // 创建只有一个元素(id)的数组
NSArray *arr7 = [NSArray arrayWithObject:@"qian"]; NSArray *arr8 = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil]; // 从 文件 创建字符串
NSString *path = [NSHomeDirectory() stringByAppendingString:@"/Desktop/test.txt"]; NSArray *arr9 = [[NSArray alloc] initWithContentsOfFile:path];
NSArray *arr10 = [NSArray arrayWithContentsOfFile:path]; // 从 Url 创建字符串
/*
file:// 文件前缀
*/
NSURL *url = [NSURL URLWithString:[@"file://" stringByAppendingString:[NSHomeDirectory()
stringByAppendingString:@"/Desktop/test.txt"]]]; NSArray *arr11 = [[NSArray alloc] initWithContentsOfURL:url];
NSArray *arr12 = [NSArray arrayWithContentsOfURL:url]; // 泛型定义 // 指明数组中存放的是 NSString 类型数据
NSArray<NSString *> *arr13 = @[@"bei", @"jing", @"huan", @"ying", @"nin"]; // 指明数组中存放的是 NSNumber 类型数据
NSArray<NSNumber *> *arr14 = @[@2, @4, @6, @8, @10];

2、数组成员个数计算

	NSArray *arr = @[@"bei", @"jing", @"huan", @"ying", @"nin"];

	NSUInteger length = [arr count];

3、从数组中取成员

	NSArray *arr = @[@"bei", @"jing", @"huan", @"ying", @"nin"];

	// []
NSArray *arr1 = arr[1]; // objectAtIndex
NSArray *arr2 = [arr objectAtIndex:2]; // subarrayWithRange
NSArray *arr3 = [arr subarrayWithRange:NSMakeRange(2, 2)]; // for...in 循环
/*
取出数组中的每个元素,分别保存在 tmp 中
*/
for (NSString *tmp in arr) { NSLog(@"%@", tmp);
} // id (void *) 泛型指针, 取出数组中的每个元素,分别保存在 tmp 中
for (id tmp in arr) { NSLog(@"tmp = %@", tmp);
}

4、取数组中最后一个元素

	NSArray *arr = @[@"bei", @"jing", @"huan", @"ying", @"nin"];

	id lastObject1 = [arr lastObject];

	id lastObject2 = arr[[arr count]-1];

5、由元素的值获取下标

	NSArray *arr = @[@"bei", @"jing", @"huan", @"ying", @"nin"];

	NSUInteger index = [arr indexOfObject:@"huan"];

6、判断数组中是否包含某个元素

	NSArray *arr = @[@"bei", @"jing", @"huan", @"ying", @"nin"];

	BOOL result = [arr containsObject:@"huan"];

7、数组的比较

	NSArray *arr1 = @[@"bei", @"jing", @"huan", @"ying", @"nin"];
NSArray *arr2 = @[@"ni", @"hao", @"bei", @"jing"]; // isEqualToArray // 比较两个数组内容是否相同
BOOL bl = [arr1 isEqualToArray:arr2]; // firstObjectCommonWithArray // 返回两个数组中第一个相同的元素
NSString *str = [arr1 firstObjectCommonWithArray:arr2];

8、数组组合

	NSArray *arr1 = @[@"bei", @"jing", @"huan", @"ying", @"nin"];
NSArray *arr2 = @[@"Users", @"JHQ0228", @"Desktop"]; // 按指定字符组合
NSString *str1 = [arr1 componentsJoinedByString:@" "]; // 按路径组合
/*
将数组中的元素自动组合成路径,在每个元素之间自动加上 “/”
*/
NSString *str2 = [NSString pathWithComponents:arr2];

9、可变数组 NSMutableArray 的创建

	// 对象方法创建
/*
创建指定长度的数组,预先分配空间,提高效率,实际长度可大于指定长度
*/
NSMutableArray *arr1 = [[NSMutableArray alloc] initWithCapacity:0]; // 类方法创建
/*
创建指定长度的数组,预先分配空间,提高效率,实际长度可大于指定长度
*/
NSMutableArray *arr2 = [NSMutableArray arrayWithCapacity:0];

10、数组元素的添加

	NSMutableArray *arr = [NSMutableArray arrayWithCapacity:0];

	// addObject

		// 向数组中追加一个元素
[arr addObject:@"bei"]; // addObjectsFromArray // 追加数组
NSArray *arrAdd = @[@"dian", @"ying", @"xue", @"yuan"];
[arr addObjectsFromArray:arrAdd]; // insertObject... atIndex // 在数组中任意位置插入一个元素
[arr insertObject:@"hao" atIndex:2]; // arrayByAddingObject // 向数组添加一个元素,返回一个新的数组
NSArray *arr1 = [arr arrayByAddingObject:@"ma"];

11、数组元素的删除

	NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"nan", @"jing", @"huan", @"ying",
@"nin", @"bei", @"jing", @"ni", @"hao", nil]; // 删除指定下标的元素
[arr removeObjectAtIndex:2]; // 删除指定元素,删除所有指定元素
[arr removeObject:@"ying"]; // 删除指定元素
[arr removeObjectIdenticalTo:@"nan"]; // 删除指定范围的元素
NSRange range = {2,1};
[arr removeObjectsInRange:range]; // 删除最后一个元素
[arr removeLastObject]; // 删除所有元素
[arr removeAllObjects];

12、数组元素的替换

	NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"nan", @"jing", @"hao", nil];

	// 替换指定下标元素
[arr replaceObjectAtIndex:1 withObject:@"ren"];

13、数组元素的交换

	NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"bei", @"jing", @"nin", @"hao", nil];

	[arr exchangeObjectAtIndex:0 withObjectAtIndex:1];

14、数组元素的修改

	NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"bei", @"jing", @"nin", @"hao", nil];

	// 修改整个数组(覆盖重写)
[arr setArray:@[@"bei", @"jing", @"huan", @"ying", @"nin"]]; // 修改数组中的某个元素
arr[3] = @"huan";

15、给数组里的所有元素发送一个消息

	Student *stu1 = [[Student alloc] init];
Student *stu2 = [[Student alloc] init];
Student *stu3 = [[Student alloc] init]; NSArray *arr = [NSArray arrayWithObjects:stu1, stu2, stu3, nil]; // 发送消息
[arr makeObjectsPerformSelector:@selector(studentTest)];

16、数组的遍历

  • 用 for 循环遍历

    	NSArray * array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
    
    	for (int i = 0; i < [array count]; i ++) {
    
    		NSLog(@"%@", array[i]);
    }
  • 用 for...in 循环遍历

    	NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
    
    	// id (void *) 泛型指针, 取出数组中的每个元素,分别保存在 tmp 中
    for (id tmp in array) { NSLog(@"%@", tmp);
    } // 取出数组中的每个元素,分别保存在 tmp 中
    for (NSString *tmp in array) { NSLog(@"%@", tmp);
    }
  • 用 block 循环遍历

    	NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
    
    	[array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    
    		// obj == array[i],idx == i
    NSLog(@"%@", obj); if ([obj isEqual: @"huan"]) { // 停止遍历
    *stop = YES;
    }
    }];
  • 用迭代器遍历

    	NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
    
    	// 获取数组的正序迭代器
    NSEnumerator *enu1 = [array objectEnumerator]; // 获取数组的反序迭代器
    NSEnumerator *enu2 = [array reverseObjectEnumerator]; id obj = nil; // 正序,获取下一个需要遍历的元素
    while (obj = [enu1 nextObject]) { NSLog(@"%@", obj);
    } // 反序,获取下一个需要遍历的元素
    while (obj = [enu2 nextObject]) { NSLog(@"%@", obj);
    }
  • 条件遍历

    	// 1.indexesOfObjectsPassingTest
    
    		NSArray *array = [NSArray arrayWithObjects:@3, @8, @17, @2, @25, @6, @89, nil];
    
    		NSIndexSet *indexSet = [array indexesOfObjectsPassingTest:^BOOL(id  _Nonnull obj,
    NSUInteger idx,
    BOOL * _Nonnull stop) { // 遍历数组,找出数组中所有大于 10 的元素的位置
    return [obj intValue] > 10 ? : NO;
    }]; [indexSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL * _Nonnull stop) { // 输出所有大于 10 的元素值
    NSLog(@"%@", array[idx]);
    }]; // 2.indexOfObjectPassingTest NSUInteger index = [array indexOfObjectPassingTest:^BOOL(id _Nonnull obj,
    NSUInteger idx,
    BOOL * _Nonnull stop) { // 遍历数组,找出数组中第一个大于 10 的元素的位置
    return [obj intValue] > 10 ? : NO;
    }]; // 输出第一个大于 10 的元素值
    NSLog(@"%@", array[index]);

17、数组排序

  • 冒泡排序

    	NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"sunday", @"sunny", @"summer", @"sun", nil];
    
    	for (int i = 0; i < [arr count] - 1; i++) {
    for (int j = 0; j < [arr count] - 1 - i; j++) { // 大小判断 arr[j] > arr[j + 1]
    if ([arr[j] compare:arr[j + 1]] == NSOrderedDescending) { // 位置交换
    [arr exchangeObjectAtIndex:j withObjectAtIndex:(j + 1)];
    }
    }
    }
  • 用指定的方法排序

    	// 1.用指定的方法排序,可变数组排序
    
    		NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:@"sunday", @"sunny", @"summer", @"sun", nil];
    
    		// 原数组的顺序改变,指定元素的比较方法:compare:,默认排序方式为升序排列
    [arr1 sortUsingSelector:@selector(compare:)]; // 使排序结果 降序 排列
    NSEnumerator *enu = [arr1 reverseObjectEnumerator]; id obj = nil;
    while (obj = [enu nextObject]) { // 排序后的结果为降序
    NSLog(@"%@", obj);
    } // 2.用指定的方法排序,不可变数组排序 NSArray *arr2 = [NSArray arrayWithObjects:@"sunday", @"sunny", @"summer", @"sun", nil]; // 返回一个排好的数组,原数组的顺序不变,指定元素的比较方法:compare:
    NSArray *arr3 = [arr2 sortedArrayUsingSelector:@selector(compare:)]; // 3.用指定的方法排序,自定义类 // People.h #import <Foundation/Foundation.h> @interface People : NSObject // 名
    @property (nonatomic, retain) NSString *firstname; // 姓
    @property (nonatomic, retain) NSString *lastname; + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname; // 返回值类型为 NSComparisonResult
    - (NSComparisonResult)comparePeople:(People *)peop; @end // People.m #import "People.h" @implementation People + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname {
    People * peop = [[People alloc] init]; peop.lastname = lastname;
    peop.firstname = firstname; return peop;
    } - (NSComparisonResult)comparePeople:(People *)peop { // 先按照姓排序
    NSComparisonResult result = [self.lastname compare: peop.lastname]; if (result == NSOrderedSame) { // 如果有相同的姓,就比较名字
    result = [self.firstname compare: peop.firstname];
    } return result;
    } -(NSString *)description{ return [NSString stringWithFormat:@"%@ %@", self.firstname, self.lastname];
    } @end // main.m #import "People.h" People *peop1 = [People peopleWithFirstname:@"MingJie" lastname:@"Li"];
    People *peop2 = [People peopleWithFirstname:@"LongHu" lastname:@"Huang"];
    People *peop3 = [People peopleWithFirstname:@"LianJie" lastname:@"Li"];
    People *peop4 = [People peopleWithFirstname:@"Jian" lastname:@"Xiao"]; // 1.用指定的方法排序,可变数组排序 NSMutableArray *array1 = [NSMutableArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; // 原数组的顺序改变
    [array1 sortUsingSelector:@selector(comparePeople:)]; // 2.用指定的方法排序,不可变数组排序 NSArray *array2 = [NSArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; // 返回一个排好的数组,原数组的顺序不变
    NSArray *array3 = [array2 sortedArrayUsingSelector:@selector(comparePeople:)];
  • 用 Block 排序

    	// 1.利用 block 进行排序,可变数组排序
    
    		NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:@"sunday", @"sunny", @"summer", @"sun", nil];
    
    		[arr1 sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    
    			// 指定比较的方法,两个元素值比较
    NSComparisonResult result = [obj1 compare:obj2]; // 返回比较的结果
    return result;
    }]; // 2.利用 block 进行排序,不可变数组排序 NSArray *arr2 = [NSArray arrayWithObjects:@"sunday", @"sunny", @"summer", @"sun", nil]; // 返回一个排好的数组
    NSArray *arr3 = [arr2 sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { // 指定比较的方法,两个元素值比较
    NSComparisonResult result = [obj1 compare:obj2]; // 返回比较的结果
    return result;
    }]; // 3.利用 block 进行排序,自定义类 // People1.h #import <Foundation/Foundation.h> @interface People1 : NSObject // 名
    @property (nonatomic, retain) NSString *firstname; // 姓
    @property (nonatomic, retain) NSString *lastname; + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname; @end // People1.m #import "People1.h” @implementation People1 + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname {
    People1 * peop = [[People1 alloc] init]; peop.lastname = lastname;
    peop.firstname = firstname; return peop;
    } -(NSString *)description{ return [NSString stringWithFormat:@"%@ %@", self.firstname, self.lastname];
    } @end // main.m #import "People1.h” People1 *peop1 = [People1 peopleWithFirstname:@"MingJie" lastname:@"Li"];
    People1 *peop2 = [People1 peopleWithFirstname:@"LongHu" lastname:@"Huang"];
    People1 *peop3 = [People1 peopleWithFirstname:@"LianJie" lastname:@"Li"];
    People1 *peop4 = [People1 peopleWithFirstname:@"Jian" lastname:@"Xiao"]; // 1.利用 block 进行排序,可变数组排序 NSMutableArray *array1 = [NSMutableArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; [array1 sortUsingComparator:^NSComparisonResult(People1 * _Nonnull obj1, People1 * _Nonnull obj2) { // 先按照姓排序
    NSComparisonResult result = [obj1.lastname compare:obj2.lastname]; if (result == NSOrderedSame) { // 如果有相同的姓,就比较名字
    result = [obj1.firstname compare:obj2.firstname];
    } return result;
    }]; // 2.利用 block 进行排序,不可变数组排序 NSArray *array2 = [NSArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; NSArray *array3 = [array2 sortedArrayUsingComparator:^NSComparisonResult(People1 * _Nonnull obj1,
    People1 * _Nonnull obj2) { // 先按照姓排序
    NSComparisonResult result = [obj1.lastname compare:obj2.lastname]; if (result == NSOrderedSame) { // 如果有相同的姓,就比较名字
    result = [obj1.firstname compare:obj2.firstname];
    } return result;
    }];
  • 按描述器排序

    	//  Book.h
    
    		#import <Foundation/Foundation.h>
    
    		@interface Book : NSObject
    
    		@property (nonatomic, retain) NSString *name;
    
    			+ (id)bookWithName:(NSString *)name;
    
    		@end
    
    	//  Book.m
    
    		#import "Book.h"
    
    		@implementation Book
    
    		+ (id)bookWithName:(NSString *)name {
    Book *book = [[Book alloc] init];
    book.name = name;
    return book;
    } @end // People2.h #import <Foundation/Foundation.h> @class Book; @interface People2 : NSObject // 名
    @property (nonatomic, retain) NSString *firstname; // 姓
    @property (nonatomic, retain) NSString *lastname; // 书
    @property (nonatomic, retain) Book *book; + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname bookName:(NSString *)bookName; @end // People2.m #import "People2.h"
    #import "Book.h" @implementation People2 + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname bookName:(NSString *)bookName { People2 *peop = [[People2 alloc] init]; peop.lastname = lastname;
    peop.firstname = firstname;
    peop.book = [Book bookWithName:bookName]; return peop;
    } - (NSString *)description{ return [NSString stringWithFormat:@"%@ %@, bookName: %@", self.firstname, self.lastname, self.book.name];
    } @end // main.m #import "People2.h" People2 *peop1 = [People2 peopleWithFirstname:@"MingJie" lastname:@"Li" bookName:@"book1"];
    People2 *peop2 = [People2 peopleWithFirstname:@"LongHu" lastname:@"Huang" bookName:@"book2"];
    People2 *peop3 = [People2 peopleWithFirstname:@"LianJie" lastname:@"Li" bookName:@"book2"];
    People2 *peop4 = [People2 peopleWithFirstname:@"Jian" lastname:@"Xiao" bookName:@"book1"]; // 先按照书名进行排序
    /*
    这里的 key 写的是 @property 的名称
    */
    NSSortDescriptor *bookNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"book.name" ascending:YES]; // 再按照姓进行排序
    NSSortDescriptor *lastnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"lastname" ascending:YES]; // 再按照名进行排序
    NSSortDescriptor *firstnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"firstname" ascending:YES]; // 1.按描述器排序,可变数组排序 NSMutableArray *array1 = [NSMutableArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; // 按顺序添加排序描述器
    NSMutableArray *descs1 = [NSMutableArray arrayWithObjects:bookNameDesc, lastnameDesc, firstnameDesc, nil]; [array1 sortUsingDescriptors:descs1]; // 2.按描述器排序,不可变数组排序 NSArray *array2 = [NSArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; // 按顺序添加排序描述器
    NSArray *descs2 = [NSArray arrayWithObjects:bookNameDesc, lastnameDesc, firstnameDesc, nil]; NSArray *array3 = [array2 sortedArrayUsingDescriptors:descs2];

iOS - OC NSArray 数组的更多相关文章

  1. OC NSArray 数组

    # OC NSArray 数组 NSArray常用方法 获取数组中第一位元素 array.firstObject 获取数组中最后一个元素 array.lastObject 获取数组中指定索引下标的元素 ...

  2. OC基础:数组.字典.集 分类: ios学习 OC 2015-06-18 18:58 47人阅读 评论(0) 收藏

    ==============NSArray(不可变数组)=========== NSArray,继承自NSObject  用来管理(储存)一些有序的对象,不可变数组. 创建一个空数组 NSArray ...

  3. Objective-C之NSArray(数组)默认排序与自定义排序

    在讲OC中数组的排序之前我先上一段代码,它是简单数组排序的一种方法(也就是元素是字符串或者数据的数组,因为后面要讲元素为类的数组排序) 代码1: NSArray *sortArr4 = [sortAr ...

  4. iOS - OC 面向对象语法

    1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...

  5. iOS开发-NSArray

    忙了一上午,解决了几个bug,现在终于抽出来一点时间喝点水休息下, 想着系列这么浩大的一个工程,才刚刚开始写,不能断了,就跟写小说一样,既然是系列,那么就需要不停更... 好吧. 简单的说说iOS开发 ...

  6. ios+oc面试题

    ios+oc面试题     浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...

  7. 从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray)

    从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray) deque deque双端队列,分段连续空间数据结构,由中控的map(与其说map,不如说是数 ...

  8. IOS判断NSArray是否为空

    场景描述:判断一个集合是否为空,如果不为空执行A,如果为空执行B Java实现方法 public void exec(){ List<String> list = this.getCont ...

  9. swift和OC - 拆分数组 和 拆分字符串

    1. 拆分数组 /// 根据 数组 截取 指定个数返回 多个数组的集合 func splitArray( array: [Date], withSubSize subSize: Int) -> ...

随机推荐

  1. shareSDK集成步骤

    按下面目录结构吧sdk的目录文件拷贝到自己的工程中 针对各个平台的分享格式,整理成了一个工具类,不同的平台分享的参数http://wiki.mob.com/不同平台分享内容的详细说明/ package ...

  2. 快速排序算法(Java)

    快速排序算法的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另外一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序. class Parti ...

  3. android Activity的启动模式

    Android中Activity启动模式详解   在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启 ...

  4. HDU 2067:小兔的棋盘

    小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. 发现数据库错误模式(AppScan扫描结果)

    最近工作要求解决下web的项目的漏洞问题,扫描漏洞是用的AppScan工具,其中此篇文章是关于发现数据库错误模式问题的.下面就把这块东西分享出来. 原创文章,转载请注明 --------------- ...

  6. Opencv中直线的表示方法

                               [blog算法原理]Opencv中直线的表示方法  一.问题的提出:​          在实际项目编写过程中,需要对直线(Line)进行特定的处 ...

  7. uva 1025,城市的间谍

    题目链接:https://uva.onlinejudge.org/external/10/1025.pdf 题意: 地铁是线性的,有n个站,编号(1~n),M1辆从左至右的车,和M2辆从右至左的车,发 ...

  8. phpQuery—基于jQuery的PHP实现

    转载于:http://www.cnblogs.com/in-loading/archive/2012/04/11/2442697.html Query的选择器之强大是有目共睹的,phpQuery 让p ...

  9. js获取页面高度赋值给div

    <script type="text/javascript"> window.onload=function(){ map_width=document.body.cl ...

  10. ASP函数大全

    ASP函数大全 Array() FUNCTION: 返回一个数组 SYNTAX: Array(list) ARGUMENTS: 字符,数字均可 EXAMPLE: <% Dim myArray() ...