当C++遇到iOS应用开发—Dict集合

在Object-c中,字典(KEY/VALUE)使用NSDictionary 和NSMutableDictionary(可变长)。使用语法如下: NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@”value1″,@”key1″,@”value2″,@”key1″,nil];

在Object-c中,字典(KEY/VALUE)使用NSDictionary 和NSMutableDictionary(可变长)。使用语法如下:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@”value1 “,@”key1 “,@”value2 “,@”key1 “,nil];//注意用nil结束

取元素的方法:

NSString *value = [myDictionary objectForKey:@”key1 “];

该写法过于繁复。所以我将C++中的map类进行了封装:

ifndef Discuz2_Maps_h

define Discuz2_Maps_h

include

大家看到,这里使用的定义比较器的方式来指定当KEY的类型是NSString时的比较方式。而这样做的原因是当查找某KEY(NSString类型) 时,这时在map比较器中的数据会出现字符长度变长的情况,且变长的那部分内容为乱码。这会造成查不到相应的结果。当然这样做会不会造成性能上的损失,目 前还没测试过。感兴趣的朋友可以帮助测试一下。

下面来看一下具体用法。

实例化对象并添加数据:

Dict

或用下面方式:

NSArray *array = [[NSArray alloc] initWithObjects:
@”One “, @”1 “, @”Two “, @”2 “, @”Three “, @”3 “, @”Four “, @”4 “,nil];
Dict

判断是否存在某数据:

BOOL iscontains = dict.contains(@”代震军3 “);

获取记录条数:

int size = dictBatch.size();

遍历:

for(std::map

或使用foreach:

__block NSString* str;
for_each(dict.begin(), dict.end(), ^(std::pair

获取指定索引记录:

NSString* result = dict[@”代震军2 “];

代码比较简单,就不多做解释了,呵呵。

好了,今天的内容就先到这里了。

原文链接:http://www.cnblogs.com/daizhj/archive/2012/11/09/2762753.html

作者: daizhj, 代震军
微博: http://weibo.com/daizhj
Tags:ios, c++, NSDictionary, NSMutableDictionary, map

Original: https://www.cnblogs.com/daizhj/archive/2012/11/09/map-ios-objectc.html
Author: 代震军
Title: 当C++遇到iOS应用开发—Dict集合

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/536307/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【C++】第1章 在VS2015中用C++编写控制台应用程序

    分类:C++、VS2015 创建日期:2016-06-12 看到不少人至今还在用VC 6.0开发工具学习C++,其实VC 6.0开发工具早就被淘汰了。这里仅介绍学习C++时推荐使用…

    C++ 2023年5月29日
    067
  • Silverlight5通过P/Invoke调用自定义C/C++ DLL(Lua)

    注1:为了确保silverilght5在浏览器或桌面上成功调用win32 DLL,必须在项目属性中勾选相应的权限: 勾选Enable running application out…

    C++ 2023年5月29日
    073
  • 解决c++中delete后内存系统不回收

    一般new出来的内存,delete掉后。 此时如果看top内存没有减少,则可以使用下面函数让系统强制回收。 #include malloc_trim(0); Original: h…

    C++ 2023年5月29日
    079
  • C++源码—_Ptr_base(MSVC 2017)

    1 _Ptr_base _Ptr_base 是智能指针的基类,它包含两个成员变量: 指向目标元素的指针 _Ptr 和 引用计数基类指针 _Rep。 _Ptr 指向的元素类型为 us…

    C++ 2023年5月29日
    066
  • 设置VS2017 来识别其他文件格式为C++文件

    问题:对于其他库中的文件,如.hpp, .ih 往往由于其他库的文件类型撰写风格,需要在Vs2017中能够类似于C++语法来解析这些文件,则需要如下设置: 打开”工具&…

    C++ 2023年5月29日
    052
  • 聊聊 C++ 中的四种类型转换符

    一:背景 在玩 C 的时候,经常会用 void* 来指向一段内存地址开端,然后再将其强转成尺度更小的 char* 或 int* 来丈量一段内存,参考如下代码: int main()…

    C++ 2023年5月29日
    069
  • 从OSG源码学习C++之ArgumentParser

    待续 posted @2020-09-05 07:09 焦涛 阅读(409 ) 评论() 编辑 Original: https://www.cnblogs.com/Joetao/a…

    C++ 2023年5月29日
    054
  • C++多线程库的常用函数 std::this_thread::get_id()

    格式:函数 + 头文件 + 用例 + 解释说明 函数: std::this_thread::get_id() 头文件: 用例: std::thread::id master_thr…

    C++ 2023年5月29日
    042
  • Lua & C++

    Lua 与 C++ 交互 ## 提供系统级别Lua API 提供系统级别API需要对Lua源码进行修改 ### Lua源码编译 [LuaResourceCode]:https://…

    C++ 2023年5月29日
    059
  • C++ 总结

    1、迭代器并不是都可以进行加减 迭代器实质上是一个指针,但是,并不是所有的容器的迭代器可以支持加减操作。 能进行算术运算的迭代器只有随机访问迭代器,要求容器元素存储在连续内存空间内…

    C++ 2023年5月29日
    064
  • 生成1~n之间随机整数_c++

    rand() % (high – low + 1) + low; Original: https://www.cnblogs.com/douzujun/p/16457919.htm…

    C++ 2023年5月29日
    036
  • C++:vector中的resize()函数 VS reserve()函数

    http://www.cplusplus.com/reference/vector/vector/vector/ 写代码的时候无意错用了这两个函数 导致测试的时候,程序运行崩溃 发…

    C++ 2023年5月29日
    053
  • 聊聊 C++ 中几类特殊成员函数

    一:背景 在 C# 中要说 类默认给我们定义的特殊成员函数,莫过于 构造函&#x65…

    C++ 2023年5月29日
    056
  • C++ register 关键字

    register 简介: register 就像是汉语和英语中的形容词(不要问为什么只有两种语言,因为小编只会这两种),在 C++ 中 register 是用来修饰变量的。 reg…

    C++ 2023年5月29日
    047
  • C++ *和&

    概述 在c++中,当申明变量int *p 的时,表示p是一个储存地址的变量;比如int _p=0,表示p指向地址为00000000的地址单元。当申明指针p之后,再用_p表示p指向的…

    C++ 2023年5月29日
    056
  • visual studio code的c++扩展

    posted @2020-08-20 10:07 kissrule 阅读(338 ) 评论() 编辑 Original: https://www.cnblogs.com/longc…

    C++ 2023年5月29日
    099
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球