C++ list-map链表与映射表的简单使用

C++ list-map链表与映射表的简单使用

在C++编程中,链表与映射表都是常用的数据结构之一,对于常见的数据处理和算法实现难度降低起到了不可忽视的作用。本文将为大家详细讲解C++中list与map的链表与映射表的简单使用方法。

C++ list链表的简单使用

概述

链表是一种常用的数据结构,与数组不同的是,链表中的存储单位是结构体,在每个结构体中有一个指向另一个结构体的指针。链表的优点在于在插入和删除操作时不需要移动大量数据,同时也可以方便地进行多次插入和删除操作。

初始化

C++中的链表定义在头文件中,可以使用默认的构造函数进行创建:

#include <list>  
std::list<int> myList;

初始化一个int型的空链表。

基本操作

链表的基本操作包括插入、删除等,下面我们给出几个常见的例子。

插入

在末尾插入一个元素:

myList.push_back(1);

在链表头插入一个元素:

myList.push_front(2);    

在特定位置插入一个元素:

std::list<int>::iterator it;  
it = myList.begin();  
it++;  
myList.insert(it,3);

删除

从末尾删除一个元素:

myList.pop_back();

从链表头删除一个元素:

myList.pop_front();

从特定位置删除一个元素:

std::list<int>::iterator it;  
it = myList.begin();  
it++;  
myList.erase(it);

C++ map映射表的简单使用

概述

映射表又称为字典或关联式容器,是一个由键值对组成的数据结构,每个键和值都可以是任意数据类型。其中每个键都是唯一的,我们可以通过键来查找到值。在C++中,映射表使用map容器实现。

初始化

C++中的map也定义在

头文件中,使用默认的构造函数创建:

#include <map>
std::map<int, std::string> myMap;

初始化一个int型的空映射表。

基本操作

映射表的基本操作包括插入、删除和查找等,下面我们给出几个常见的例子。

插入

在映射表中插入一对键值:

myMap.insert(std::make_pair(1, "Hello"));

通过中括号索引插入键值对:

myMap[2] = "World";

删除

从映射表中删除一个元素:

myMap.erase(1);

查找

查找映射表中是否存在某个键:

if (myMap.find(1) != myMap.end()) {
    std::cout << myMap[1];
}

查找映射表中是否存在某个值:

for (auto item : myMap) {
    if (item.second == "World") {
        std::cout << "Key: " << item.first << std::endl;
    }
}

示例说明

下面通过两个示例展示C++中list和map的使用方法。

示例1:利用链表实现一个简单的高温排序程序

程序要求输入五天的高温数据,并按升序排序输出。我们可以利用list容器存储高温数据,并使用sort函数进行排序。

#include <iostream>
#include <list>
#include <algorithm>

int main() {

    std::list<int> temp;

    std::cout << "Please enter the temperature in the past five days:" << std::endl;

    for (int i = 0; i < 5; i++) {
        int input;
        std::cin >> input;
        temp.push_back(input);
    }

    temp.sort();

    std::cout << "The sorted temperature sequence is:" << std::endl;

    for (auto item : temp) {
        std::cout << item << std::endl;
    }

    return 0;
}

示例2:利用映射表实现一个简单的计算英文文本词频程序

程序要求读入一篇英文文章,并计算出其中每个单词的出现频率。我们可以利用map容器存储每个单词,并用一个整型变量记录出现次数。

#include <iostream>
#include <map>
#include <string>
#include <algorithm>

int main() {

    std::map<std::string, int> freq;

    std::cout << "Please enter the text:" << std::endl;

    std::string text;
    std::getline(std::cin, text);

    std::transform(text.begin(), text.end(), text.begin(), ::tolower);

    int pos = 0;
    while (pos != std::string::npos) {
        std::string word;
        pos = text.find(" ");
        word = text.substr(0, pos);
        freq[word]++;
        text.erase(0, pos + 1);
    }

    std::cout << "The word frequency is:" << std::endl;

    for (auto item : freq) {
        std::cout << item.first << ": " << item.second << std::endl;
    }

    return 0;
}

以上就是C++ list与map的链表与映射表的简单使用攻略,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ list-map链表与映射表的简单使用 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 易优eyoucms数据表结构和字段说明(数据字典)

    下面我来详细讲解“易优eyoucms数据表结构和字段说明(数据字典)”的完整攻略。 1. 引言 易优eyoucms是一款CMS(内容管理系统)程序,通过数据库存储用户输入的数据,因此对于数据表结构和字段的说明非常重要。本文将介绍易优eyoucms的数据表结构和字段的详细说明,包括每个表的名称、各个字段的名称、数据类型、长度、默认值、是否可以为空、注释等信息。…

    other 2023年6月25日
    00
  • C语言数据结构系列篇二叉树的概念及满二叉树与完全二叉树

    C语言数据结构系列篇:二叉树的概念及满二叉树与完全二叉树 一、二叉树的概念 二叉树是一种特殊的树型结构,它的每个节点最多有两个子节点,称为左子节点和右子节点。二叉树可以为空树,也可以是非空树。二叉树的每个节点保存着某种数据,可以是整数、浮点数、字符串等。 下图是一个简单的二叉树示例: 1 / \ 2 3 / \ 4 5 其中,数字表示节点保存的数据。根节点是…

    other 2023年6月27日
    00
  • VB实现的16位和32位md5加密代码分享

    VB实现的16位和32位md5加密代码分享攻略 简介 MD5(Message Digest Algorithm 5)是一种常用的哈希算法,用于将任意长度的数据转换为固定长度的哈希值。在VB中,我们可以使用现有的库或自己实现MD5算法来进行加密。 16位MD5加密代码示例 下面是一个示例代码,用于在VB中实现16位MD5加密: Imports System.S…

    other 2023年7月28日
    00
  • 浅谈Java自定义类加载器及JVM自带的类加载器之间的交互关系

    浅谈Java自定义类加载器及JVM自带的类加载器之间的交互关系 Java类加载器负责将类的字节码从磁盘上读取到JVM内存中,并为类创建JVM运行时数据结构。JVM自带三种类加载器:启动类加载器、扩展类加载器和应用程序类加载器。Java自定义类加载器可以根据特定的需求实现不同的类加载行为和策略。 Java类加载器间的层次关系 Java类加载器中有一个明确的层次…

    other 2023年6月27日
    00
  • oracle创建dblink方法示例

    下面我将为您详细讲解“oracle创建dblink方法示例”的完整攻略。 创建数据库连接 在Oracle中创建数据库连接需要使用CREATE DATABASE LINK命令,其语法如下: CREATE DATABASE LINK link_name CONNECT TO username IDENTIFIED BY password USING ‘datab…

    other 2023年6月27日
    00
  • 微信小程序实现文章关注功能详细流程

    followedArticles: [] }, onLoad() { // 从后端接口获取用户关注的文章列表 // … }});“` 以上是实现微信小程序文章关注功能的完整流程。希望对您有所帮助!如果您还有其他问题,请随时提问。

    other 2023年10月17日
    00
  • weblogic迁移总结

    WebLogic迁移总结的完整攻略 WebLogic是一种常见的Java应用服务器,用于部署和运行Java应用程序。在某些情况下,您可能需要将WebLogic迁移到新的环境,例如新的硬件、操作系统或云平台。本文将为您提供WebLogic迁移的完整攻略,包括以下步骤: 确定迁移的目标环境 准备迁移环境 备份WebLogic配置和数据 迁移WebLogic应用程…

    other 2023年5月6日
    00
  • C语言的常量和字符串

    C语言的常量和字符串 C语言中,常量是在编译时就确定下来的值,不能被修改的数据。 常见的常量包括:整型常量、浮点型常量、字符常量和枚举常量。 整型常量 整型常量是不带小数部分的数字序列,可以是正数或负数。 在C语言中,可以使用十六进制、八进制和十进制表示整型常量。十六进制和八进制分别使用0x和0开头。 下面是一些整型常量的示例: int a = 10; //…

    other 2023年6月20日
    00
合作推广
合作推广
分享本页
返回顶部