当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++多线程库的常用函数 std::this_thread::get_id()

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

    C++ 2023年5月29日
    038
  • C++ 11 关键字:thread_local(转)

    thread_local 是 C++ 11 新引入的一种存储类型,它会影响变量的存储周期。 C++ 中有 4 种存储周期: 有且只有 thread_local 关键字修饰的变量具有…

    C++ 2023年5月29日
    041
  • 拓扑排序(二)之 C++详解

    拓扑排序(Topological Order)是指,将一个有向无环图(Directed Acyclic Graph简称DAG)进行排序进而得到一个有序的线性序列。 这样说,可能理解…

    C++ 2023年5月29日
    036
  • 开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端

    这应该是继我研究手册QQ协议后的第2个稍微正式一点的网络程序, 不只是Scoket套接字编程, 还涉及到更多的HTTP协议知识! 阿里云开放储存服务OSS官方已经提供了不少SDK,…

    C++ 2023年5月29日
    049
  • C++中的三种继承关系

    先看类中声明成员时的三种访问权限 public : 可以被任意实体访问 protected : 只允许子类及本类的成员函数访问 private : 只允许本类的成员函数访问 在类继…

    C++ 2023年5月29日
    064
  • EclipseC++学习笔记-3 直接在wsl2中启动带界面应用

    1、下载https://sourceforge.net/projects/vcxsrv/2、安装运行 注意不要多次启动最后一步可以保存为快捷方式,下次直接双击启动3. 设置WSL …

    C++ 2023年5月29日
    059
  • const 在 C 和 C++ 中的区别

    1 C 中的 const 内存分配 1.1 修饰全局变量 cpp;gutter:true;</p> <h1>include</h1> <p…

    C++ 2023年5月29日
    038
  • (筆記) 如何讀取binary file某個byte連續n byte的值? (C/C++) (C)

    Abstract通常公司為了保護其智慧財產權,會自己定義檔案格式,其header區會定義每個byte各代表某項資訊,所以常常需要直接對binary檔的某byte直接進行讀取,且連續…

    C++ 2023年5月29日
    041
  • GCC:/usr/lib/libstdc++.so.6: version GLIBCXX_3.4.15 not found

    源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.15' …

    C++ 2023年5月29日
    078
  • 右值引用与转移语义(C++11)

    参考资料: 左值和右值定义: C++( 包括 C) 中所有的表达式和变量要么是左值,要么是右值。通俗的 左值的定义就是非临时对象(可以取地址,有名字),那些可以在多条语句中使用的对…

    C++ 2023年5月29日
    064
  • c++ 11新特性学习1

    static_assert 静态断言,特点是编译期的断言检查 assert 运行时期的断言检查 二者参数用法相同 Original: https://www.cnblogs.com…

    C++ 2023年5月29日
    049
  • C++20新特性

    conceptrequiresconstinitconstevalco_awaitco_returnco_yieldchar8_t 优点:1)没有头文件;2)声明实现仍然可分离, …

    C++ 2023年5月29日
    060
  • [转]C++ 类中的static成员的初始化和特点

    在C++的类中有些成员变量初始化和一般数据类型的成员变量有所不同。以下测试编译环境为: cpp;gutter:true; ➜ g++ -v Using built-in specs…

    C++ 2023年5月29日
    051
  • Android JNI之C/C++层调用JAVA

    从C/C++层调用JAVA层代码步骤: 1. 在JAVA类中创建java方法和本地方法 public class TestNdk{ int a;//本示例中将被修改的JAVA变量 …

    C++ 2023年5月29日
    049
  • (筆記) 如何寫入binary file某個byte連續n byte的值? (C/C++) (C)

    Abstract通常公司為了保護其智慧財產權,會自己定義檔案格式,其header區會定義每個byte各代表某項資訊,所以常常需要直接對binary檔的某byte直接進行寫入,且連續…

    C++ 2023年5月29日
    057
  • c++11新特性学习2

    noexcept 替代 throw。优点是更安全, 如果noexcept 修饰的函数抛出了异常,编辑器可以直接选择终止程序。 C++ 11中析构函数默认为noexcept(true…

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