编程启蒙-面向对象编程-数据

  • 面向对象编程-数据

  • 初步编程(有关数据,有点晦涩)
    • 数据:数据的原始形态,如数字、文本、图片等
      • 数据类型:定义了数据在计算机中的表示和能执行的操作
        • 基本类型
          • 空类型
            • void
          • 算术类型
            • 整形
              • 整数:-2、0、1
              • 布尔:Ture / Flase(1 / 0 存储)
              • 字符:a、!、您(ASCLL码)
            • 浮点型
              • 123.456
        • 复合类型
          • 提供对其他对象的间接访问
            • 引用:变量的别名
            • 指针:指向其他变量的数据类型
      • 数据元素(Data Element):可简单亦可复杂。数据结构中其通常被视为不可分割的个体,是数据操作的基本对象。
        • 标识性:
          • 每个数据元素都有唯一的标识,使其能够与其他元素区分开来。在某些数据结构中,这 个标识可能是元素的索引或键值
        • 数据值:
          • 数据元素包含一个或多个数据值,这些值可以是基本数据类型(如整数、浮点数、字符)或复合数据类型(如记录、结构体、对象)
        • 结构属性:
          • 数据元素在数据结构中的位置和关系定义了其结构属性。例如,在数组中,数据元素按顺序排列,可以通过索引直接访问;在树结构中,数据元素具有父子关系
        • 操作:
          • 数据元素通常支持一系列操作,如插入、删除、查找、更新等。这些操作取决于数据元素所在的数据结构
        • 复杂度:
          • 数据元素可以是简单的,如一个整数或一个字符;也可以是复杂的,如一个包含多个字段的对象。在复杂数据元素中,每个字段都可以是一个简单或复杂的数据项
        • 抽象层次:
          • 在不同的抽象层次上,数据元素的概念可能有所不同。在高级编程语言中,数据元素可以是任何变量或数据对象;在数据库中,数据元素可能指的是表中的行或记录。
      • 数据结构:组织和存储数据元素的方式,它决定了数据如何被访问和修改
        • 线性数据结构:元素以线性方式排列,每个元素最多只有两个邻居
          • 数组(Array):固定大小的元素序列,可以随机访问
          • 链表(Linked List):动态大小的元素序列,元素通过指针连接
          • 栈(Stack):后进先出(LIFO),只允许在一端进行插入和删除操作
          • 队列(Queue):先进先出(FIFO),允许一端插入元素,另一端删除元素
        • 树形数据结构:元素以层次化的树状结构排列
          • 二叉树(Binary Tree):每个节点最多有两个子节点的树结构
          • 平衡树(AVL Tree):自平衡的二叉搜索树
          • 红黑树(Red-Black Tree):自平衡的二叉搜索树,保持黑高性质
        • 图形数据结构:元素以非线性的图形结构排列
          • 图(Graph):由节点和边组成,用于表示对象之间的多对多关系
          • 有向图(Directed Graph):边有方向的图
          • 无向图(Undirected Graph):边没有方向的图
        • 集合数据结构:用于存储不重复的元素集合
          • 集合(Set):存储不重复元素的集合
          • 多集合(Multiset):允许元素重复的集合
        • 散列数据结构:使用散列函数组织数据,以便快速访问
          • 哈希表(Hash Table):使用哈希函数索引数据的结构
        • 其他数据结构:包括堆(Heap)、优先队列(Priority Queue)等
      • 容器:容器是一种特殊的数据结构,它提供了对数据元素进行管理和操作的方法
        • 与数据结构的区别
          • 关注点
            • 数据结构:数据的组织和操作方法
            • 容器:数据的储存与管理
          • 实现
            • 数据结构:是容器的一种实现方式,如数组可是数据结构,亦是容器
            • 容器:数据结构的具体实现,如C++STL中的vector
          • 接口
            • 数据结构:提供提供了一组操作:插入、删除、查找等
            • 容器:提供了一组接口,如添加、移除、访问等
        • 例子
          • 数据结构
            • 数组:一种线性数据结构,允许随机访问和固定大小的存储。
            • 链表:一种线性数据结构,允许动态大小和顺序访问。
            • 树:一种树形数据结构,用于层次化的数据组织和快速访问。
          • 容器
            • Python列表(list):容器,基于数组,提供动态大小、顺序访问
            • C++向量(vector):容器,基于数组,提供动态大小、随机访问
            • Java集合(Collection):接口,表示不同类型的容器
              • 如列表、集合、队列等
                类:创建具有特定属性和方法的对象的模板,类是对象的蓝图,对象是类的实例
        • 属性(Attributes
          • 属性是对象的特征或状态,通常是指对象可以拥有的一些值
          • 例:一个Person类可能有一属性叫做name,用于存储一个人的名字
        • 方法(Methods
          • 方法是对象可以执行的操作或功能。它们定义了对象的行为
          • 例:person类可能有一方法sayHello,用于让对象打印出"Hello"
        • 构造函数(Constructors
          • 构造函数是一种特殊的方法,用于在创建对象时初始化对象的属性
          • 每个类都有一个构造函数,默认下,如果没有显式定义
          • 编译器会提供一个默认构造函数
        • 析构函数(Destructors
          • 析构函数是当对象被销毁时自动调用的特殊方法
          • 用于清理对象占用的资源
        • 继承(Inheritance
          • 继承允许一个类(子类)继承另一个类(父类)的属性和方法
          • 子类可以添加新的属性和方法,或者覆盖父类的方法
        • 多态(Polymorphism
          • 多态允许一个对象以多种不同的形式出现
          • 在面向对象编程中,多态通常是通过继承和接口实现的
        • 封装(Encapsulation
          • 封装是将数据和操作数据的函数组合在一起,隐藏对象的内部实现细节
          • 只对外提供接口。这有助于保护对象的状态,并使代码更加易于维护

-END-

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: CMapStringToString是MFC中的一个映射表类,用于存储字符串键和字符串值之间的映射关系。遍历CMapStringToString的对象元素可以使用GetNextAssoc方法,它接受两个参数,第一个参数是CString类型的键,第二个参数是对应的值。可以使用以下代码进行遍历: CString key, value; POSITION pos = map.GetStartPosition(); while (pos != NULL) { map.GetNextAssoc(pos, key, value); // 对key和value进行处理 } ### 回答2: CMapStringToString是MFC(Microsoft Foundation Classes)中的一个类,用于实现字符串到字符串的映射。它的对象包含了多个键值对(Key-Value pairs),其中每个键(Key)都是一个字符串,对应的值(Value)也是一个字符串。我们可以使用迭代器(Iterator)来遍历CMapStringToString对象的所有键值对。 首先,我们需要使用一个迭代器对象进行初始化,指向CMapStringToString对象的第一个键值对。可以使用GetStartPosition()函数获取迭代器的初始位置。如果返回值为非空,则说明存在键值对。接下来,使用GetNextAssoc()函数来获取下一个键值对,并将其返回到指定的键和值的引用变量中。 下面是一个示例代码来遍历CMapStringToString对象的所有键值对: ``` CMapStringToString map; // 假设我们已经向map中添加了多个键值对 // 获取迭代器的初始位置 POSITION pos = map.GetStartPosition(); CString key, value; while (pos != nullptr) { // 获取下一个键值对 map.GetNextAssoc(pos, key, value); // 在这里进行键值对的操作,可以打印或者做其他处理 // 例如,打印当前的键和值 TRACE(_T("Key: %s, Value: %s\n"), key, value); } ``` 在上述示例中,我们使用了变量pos来保存迭代器的位置,key和value则是用于保存获取到的键和值的变量。在while循环中,我们不断调用GetNextAssoc()函数来获取下一个键值对,并将其分别存储在key和value中,然后可以对其进行相应的操作。 通过这种方式,我们可以遍历CMapStringToString对象的所有键值对,并对它们进行相应的操作。 ### 回答3: CMapStringToString是MFC中的一个关联容器类,用于存储字符串键和字符串值之间的映射关系。它的数据结构是一种哈希表。键值对以字符串形式存储,可以通过键快速查找对应的值。 遍历CMapStringToString的对象元素可以使用迭代器。迭代器是一种访问容器元素的对象,它可以指向容器中的元素,并提供一些操作函数。 首先,我们需要创建一个迭代器对象: ``` POSITION pos = map.GetStartPosition(); ``` 然后,通过循环来遍历所有元素,直到迭代器指向末尾nullptr: ``` while (pos != nullptr) { CString key, value; map.GetNextAssoc(pos, key, value); // 在这里可以对key和value进行操作,例如输出或者其他处理 } ``` 在循环中,我们使用GetNextAssoc函数来获取下一个键值对,函数会将key和value赋值给两个指定的变量,然后迭代器指向下一个元素。 可以通过访问key和value来对元素进行操作,如输出或者其他处理。 需要注意的是,遍历过程中不能对CMapStringToString进行修改操作,否则可能导致迭代器失效。 以上就是使用迭代器遍历CMapStringToString对象元素的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值