首页 > 编程语言 >最长的Hello, World!(C++)

最长的Hello, World!(C++)

时间:2024-07-27 20:41:41浏览次数:8  
标签:std head LinkedList C++ next current World include Hello

最长的Hello, World!(C++)

#include <iostream>
#include <string>
#include <vector>
#include <memory>
#include <random>

_<typename T>
class Node
{
public:
    T data;
    std::shared_ptr<Node<T>> next;

    Node(const T &value) : data(value), next(nullptr)
    {}
};

_<typename T>
class LinkedList
{
public:
    LinkedList() : head(nullptr)
    {}

    void append(const T &value)
    {
        auto newNode = std::make_shared<Node<T>>(value);
        if (!head)
        {
            head = newNode;
        } else
        {
            auto current = head;
            while (current->next)
            {
                current = current->next;
            }
            current->next = newNode;
        }
    }

    void print() const
    {
        auto current = head;
        while (current)
        {
            std::cout << current->data;
            if (current->next)
            {
                std::cout << " ";
            }
            current = current->next;
        }
        std::cout << "";
    }

private:
    std::shared_ptr<Node<T>> head;
};

class MessageBuilder
{
public:
    MessageBuilder()
    {
        list.append("Hello,");
        list.append("World!");
    }

    LinkedList<std::string> getMessage()
    {
        return list;
    }

private:
    LinkedList<std::string> list;
};

class Printer
{
public:
    Printer() : messageBuilder()
    {}

    void printMessage()
    {
        try
        {
            LinkedList<std::string> messageList = messageBuilder.getMessage();
            messageList.print();
        } catch (const std::exception &e)
        {
            std::cerr << "Error printing message: " << e.what();
        }
    }

private:
    MessageBuilder messageBuilder;
};

class Application
{
public:
    Application() : printer()
    {}

    void run()
    {
        printer.printMessage();
    }

private:
    Printer printer;
};

int main()
{
    Application app;
    app.run();
    return 0;
}

标签:std,head,LinkedList,C++,next,current,World,include,Hello
From: https://www.cnblogs.com/avrox/p/18327436

相关文章

  • 最长的Hello, World!(Python)
    最长的Hello,World!(Python)(lambda_,__,___,____,_____,______,_______,________:getattr(__import__(True.__class__.__name__[_]+[].__class__.__name__[__]),().__class__.__eq__.__class__.__name__[:__]+().__iter__().__cla......
  • 【C++第九章】初阶模板
    C++模板初阶模板介绍......
  • C++第七次课笔记——引用
    引用作用:给变量取别名语法:数据类型&别名=原名intmain(){ //引用基本语法 inta=10; int&b=a; // cout<<"a="<<a<<endl; cout<<"b="<<b<<endl; b=100; cout<<"a="<<......
  • C++第十一次课笔记——初始化列表算法、对象成员、静态成员
    一、初始化列表作用:C++提供初始化列表语法,用来初始化属性语法:构造函数():属性1(值1),属性2(值2),…{}classPerson{public: //传统的初始化操作 Person(inta,intb,intc){ m_A=a; m_B=b; m_C=c; } //初始化列表初始化属性 Person(inta,intb,int......
  • C++ 虚拟加载程序
    哦!J B K!我来啦!!!目录代码效果总代码  新知识生化危机  结尾代码上代码!(上次是这样吗?)voidHideCursor()//影藏光标{ CONSOLE_CURSOR_INFOcursor_info={1,0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);}还有!!! —————......
  • c++11 新特性 超级详细
    目录C++auto类型推导完全攻略auto类型推导的语法和规则auto的限制auto的应用使用auto定义迭代器auto用于泛型编程C++decltype类型推导完全攻略decltype推导规则decltype的实际应用汇总auto和decltype的区别语法格式的区别对cv限定符的处理对引用的处......
  • C++输入输出流
    目录入门     C++cout.put():输出单个字符C++cout.write():输出字符串C++cout.tellp()和cout.seekp()方法详解 C++tellp()成员方法C++seekp()成员方法 C++cout格式化输出(超级详细)C++cout成员方法格式化输出使用流操纵算子格式化输出C++怎样对输入输出......
  • C++ 红黑树
    1. 红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。红黑树的性质......
  • c++ typedef 关键字详解
    在C++中,typedef关键字用于为已有的数据类型创建一个新的别名。这使得代码更加易读和维护,尤其是当使用复杂的类型定义时。typedef可以用来简化代码或使其更具描述性。基本语法typedefexisting_typenew_name;这里,existing_type是已有的类型,new_name是你为它创建......
  • 【操作系统/C++ malloc 1KB和1MB 有什么区别?brk | mmap】
    关于malloc如何根据请求的内存大小选择使用brk还是mmap的机制,是glibc(GNUCLibrary)中malloc实现的一个常见策略,尽管具体的阈值(如128KB)可能会因glibc的不同版本或配置而有所不同。brkbrk是一个系统调用,用于改变数据段的结束地址(即“程序断点”)。在UNIX和类U......