IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ Primer Plus 第六版(中文版)第十八章(完美修订版)编程练习答案(探讨C++11新标准) -> 正文阅读

[C++知识库]C++ Primer Plus 第六版(中文版)第十八章(完美修订版)编程练习答案(探讨C++11新标准)

//本博主所写的代码仅为阅读者提供参考;

//若有不足之处请提出,博主会尽所能修改;

//附上课后编程练习题目;

//若是对您有用的话请点赞或分享提供给它人

//18.12 - 1.cpp

#include <iostream>
#include <initializer_list>

template <typename T>
T average_list(std::initializer_list<T> arr)
{
    T sum = 0;
    int num = 0;
    for (auto x = arr.begin(); x != arr.end(); ++x, ++num)
    {
        sum += *x;
    }
    return sum / num;
}

int main()
{
    using namespace std;
    auto q = average_list({15.4, 10.7, 9.0});
    cout << q << endl;
    cout << average_list({20, 30, 19, 17, 45, 38}) << endl;
    auto ad = average_list<double>({'A', 70, 65.33});
    cout << ad << endl;

    return 0;
}

//---------------------------------------------------------------------------------------------------------

//18.12 - 2.cpp

#include <iostream>
#include <string>
#include <utility>
using namespace std;

class Cpmv
{
public:
    struct Info
    {
        string qcode;
        string zcode;
    };

private:
    Info *pi;

public:
    Cpmv();
    Cpmv(string q, string z);
    Cpmv(const Cpmv &cp);
    Cpmv(Cpmv &&mv);
    ~Cpmv();
    Cpmv &operator=(const Cpmv &cp);
    Cpmv &operator=(Cpmv &&mv);
    Cpmv operator+(const Cpmv &obj) const;
    void Display() const;
};

Cpmv::Cpmv()
{
    cout << "Default constructor called.\n";
    pi = new Info;
    pi->qcode = "none";
    pi->zcode = "none";
}

Cpmv::Cpmv(string q, string z)
{
    cout << "String constructor called.\n";
    pi = new Info;
    pi->qcode = q;
    pi->zcode = z;
}

Cpmv::Cpmv(const Cpmv &cp)
{
    cout << "Copy constructor called.\n";
    pi = new Info;
    pi->qcode = cp.pi->qcode;
    pi->zcode = cp.pi->zcode;
}

Cpmv::Cpmv(Cpmv &&mv)
{
    cout << "Move constructor called.\n";
    pi = mv.pi; //地址直接覆盖;
    mv.pi = nullptr;
}

Cpmv::~Cpmv()
{
    delete pi;
}

Cpmv &Cpmv::operator=(const Cpmv &cp)
{
    if (this != &cp)
    {
        delete pi;
        pi = new Info;
        pi->qcode = cp.pi->qcode;
        pi->zcode = cp.pi->zcode;
    }
    return *this;
    cout << "Copy assignment operator called.\n";
}

Cpmv &Cpmv::operator=(Cpmv &&mv)
{
    if (this != &mv)
    {
        delete pi;
        pi = mv.pi; //地址直接覆盖;
        mv.pi = nullptr;
    }
    return *this;
    cout << "Move assignment operator called.\n";
}

Cpmv Cpmv::operator+(const Cpmv &obj) const
{
    return Cpmv(pi->qcode + obj.pi->qcode, pi->zcode + obj.pi->zcode);
}

void Cpmv::Display() const
{
    if (pi != nullptr)
    {
        cout << "The qcode is " << pi->qcode << endl;
        cout << "The zcode is " << pi->zcode << endl;
    }
    else
    {
        cout << "Cpmv::pi pointer is nullptr" << endl;
    }
    cout << endl;
    return;
}

int main()
{
    Cpmv temp1;
    cout << "temp1:\n";
    temp1.Display();

    Cpmv temp2("black", "clover");
    cout << "temp2:\n";
    temp2.Display();

    Cpmv temp3(temp1);
    cout << "temp3:\n";
    temp3.Display();

    cout << "temp4 = temp1:\n";
    Cpmv temp4;
    temp4 = temp1;
    cout << "temp4:\n";
    temp4.Display();
    cout << "temp1:\n";
    temp1.Display();

    cout << "temp5 = move(temp2):\n";
    Cpmv temp5;
    temp5 = move(temp2);
    cout << "temp5:\n";
    temp5.Display();
    cout << "temp2:\n";
    temp2.Display();

    cout << "temp6 = temp3 + temp4:\n";
    Cpmv temp6 = temp3 + temp4;
    cout << "temp6:\n";
    temp6.Display();

    return 0;
}

//---------------------------------------------------------------------------------------------------------

//18.12 - 3.cpp

#include <iostream>
using namespace std;

long double sum_value()
{
    return 0;
}

template <typename T>
long double sum_value(const T &value)
{
    return value;
}

template <typename T, typename... Args>
long double sum_value(const T &value, const Args &...args)
{
    return value + sum_value(args...);
}

int main()
{
    int n = 14;
    double x = 2.71828;
    long y = 100000;
    char ch = 'x';
    cout << sum_value(n, x, y, ch, 'K', 66, 33.67);

    return 0;
}

//---------------------------------------------------------------------------------------------------------

//18.12 - 4.cpp

/*应该是书上的程序清单中的16.15, 题目有误在此纠正*/
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;

int main()
{
    int vals[10] = {50, 100, 90, 180, 60, 210, 415, 88, 188, 201};
    list<int> yadayada(vals, vals + 10);
    list<int> etcetera(vals, vals + 10);
    auto lambda_outint = [](int n)
    { cout << n << " "; };

    cout << "Original lists:\n";
    for_each(yadayada.begin(), yadayada.end(), lambda_outint);
    cout << endl;
    for_each(etcetera.begin(), etcetera.end(), lambda_outint);
    cout << endl;
    yadayada.remove_if([](int n)
                       { return n > 100; });
    etcetera.remove_if([](int n)
                       { return n > 200; });
    cout << "Trimmed lists:\n";
    for_each(yadayada.begin(), yadayada.end(), lambda_outint);
    cout << endl;
    for_each(etcetera.begin(), etcetera.end(), lambda_outint);
    cout << endl;

    return 0;
}

//-----------------------------------------------------------------

//------------------------------------------2021年8月6日 ----------------------------------------------

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 11:49:05  更:2021-08-07 11:51:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 13:21:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码