首页 > 编程语言 >C++primer练习13.55-58

C++primer练习13.55-58

时间:2022-08-16 21:11:24浏览次数:67  
标签:Foo const 58 练习 13.55 back sorted primer data

练习13.55

为你的StrBlob添加一个右值引用版本的Push_back

void StrBlob::push_back(string&&s){data->push_back(std::move(s));}

练习13.56

如果sorted定义如下,会发生什么

Foo Foo::sorted()const &{

Foo ret(*this);

return ret.sorted();

}

::无限递归

练习13.57

如果sorted定义如下,会发生什么?

Foo Foo::sorted()const &{return Foo(*this).sorted();}

::会调用右值版本,进行排序

练习13.58

编写新版本的Foo类,其sorted函数中有打印语句,测试这个类,证明你的答案

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
class Foo {
public:
    Foo sorted()&&;
    Foo sorted() const&;

private:
    vector<int> data;
};

Foo Foo::sorted()&&
{
    sort(data.begin(), data.end());
    cout << "&&" <<endl; 
    return *this;
}

Foo Foo::sorted() const&
{

    cout << "const &" << std::endl;     
    return Foo(*this).sorted(); 
}

int main()
{
    Foo().sorted(); 
    Foo f;
    f.sorted(); 
}

 

标签:Foo,const,58,练习,13.55,back,sorted,primer,data
From: https://www.cnblogs.com/yddl/p/16592999.html

相关文章

  • AtCoder Beginner Contest 258
    A-When?问21:00后的第k分钟的时间#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+5;intn,a[N],cnt,k;int32_tmain(){ intn,h=21......
  • C-Primer-Plus-第二章-C语言概述
    第二章C语言概述参考书籍:CPrimerPlus(第6版)中文版一、前言打算跟这本书系统地学习一遍C语言,谨以此系列文章记录自己的学习之路。本文所有图片均来源于此书。二、主......
  • AGC058D Yet Another ABC String
    link由于限制是循环的考虑用连续段容斥。直接容斥的做法是枚举一组限制,并带上\((-1)^c\)的系数:某些相邻的三个数必须\(\in123,231,312\),相交的限制会互相影响得到连......
  • PCR引物设计软件primer5
    PrimerPremier5是一款分子生物学试验常用的PCR引物设计软件,下面简要介绍一下该软件的使用方法。 第一步:打开primer5软件(图1). 图1 第二步:依次点击File-->New......
  • qt5.9 +vs2015 32bit 错误“-1: error: LNK1158: 无法运行“rc.exe”
    开发平台qt5.9.0+vs201532bit....在准备运行vs2015及安装了vs2019后,运行原来可以运行的程序时,出现了错误“-1:error:LNK1158:无法运行“rc.exe”复制了“C:\Progra......
  • C++primer练习13.49-54
    练习13.49为你的String类添加一个移动构造函数和一个移动赋值运算符String(String&&a):elements(std::move(a.elements)),first_free(std::move(a.first_free)),cap(st......
  • C-Primer-Plus-第一章-初识C语言
    第一章初识C语言参考书籍:CPrimerPlus(第6版)中文版一、前言打算跟着本书系统地学习一遍C语言,谨以此系列文章记录自己的学习之路。二、主要内容1.C语言起源1972年......
  • AGC058(A,B)
    不会。。。https://atcoder.jp/contests/agc058A考虑奇偶位,枚举偶位然后将相邻三个的最大值挪过来即可。B考虑操作不大好搞。从合法答案序列入手每个数只染一个连续......