[2018年5月11号]C++ primer 课后练习第十三章 拷贝控制

13.45

左值有持久的状态,而右值要么是字面常量,要么是在表达式求值过程中创建的临时对象

13.46

    int&& r1 = f();//f()返回的是临时变量
    int& r2 = vi[0];
    int& r3 = r1;
    int&& r4 = vi[0]*f();
13.47
class String {
public:
    String() {}
    String(char c[]):begin(nullptr),end(nullptr) {
        begin = end = alloc.allocate(strlen(c));
        alloc.construct(end++,c[end-begin]);
    }
    String(const String &s) :begin(nullptr), end(nullptr) {
        std::cout << "run String(const String &)" << std::endl;
        begin = end = alloc.allocate(s.end - s.begin);
        alloc.construct(end++, s.begin + (s.end - s.begin));
    }
    String& operator=(String& s){
        std::cout << "run operator=(String& s)" << std::endl;
        char* tmpBegin, *tmpEnd;
        free();
        tmpBegin = tmpEnd = alloc.allocate(s.end - s.begin);
        alloc.construct(tmpEnd++, s.begin + (s.end - s.begin));
        begin = tmpBegin;
        end = tmpEnd;
    }
    ~String(){}
private:
    void free(){
        alloc.deallocate(begin,end-begin);
    }
    char* begin;
    char* end;
    std::allocator<char> alloc;
};

13.48:


编写了函数来确定拷贝次数,因为vector是会根据容量大小来重新分配可使用空间,所以当遇到空间不足时候会将当前所有元素进行拷贝

push_back times:1
loop times:1
push_back times:2
loop times:3
push_back times:3
loop times:5
push_back times:4
loop times:7
push_back times:5
loop times:9
push_back times:6
loop times:6
push_back times:7
loop times:13
push_back times:8
loop times:8
push_back times:9
loop times:9
push_back times:10
loop times:19
push_back times:11
loop times:11
push_back times:12
loop times:12
push_back times:13
loop times:13
push_back times:14
loop times:27
push_back times:15
loop times:15
push_back times:16
loop times:16
push_back times:17
loop times:17
push_back times:18
loop times:18
push_back times:19
loop times:19
push_back times:20
loop times:39
push_back times:21
loop times:21
push_back times:22
loop times:22
push_back times:23
loop times:23
push_back times:24
loop times:24
push_back times:25
loop times:25
push_back times:26
loop times:26
push_back times:27
loop times:27
push_back times:28
loop times:28
push_back times:29
loop times:57
push_back times:30
loop times:30
push_back times:31
loop times:31
push_back times:32
loop times:32
push_back times:33
loop times:33
push_back times:34
loop times:34
push_back times:35
loop times:35
push_back times:36
loop times:36
push_back times:37
loop times:37
push_back times:38
loop times:38
push_back times:39
loop times:39
push_back times:40
loop times:40
push_back times:41
loop times:41
push_back times:42
loop times:42
push_back times:43
loop times:85
push_back times:44
loop times:44
push_back times:45
loop times:45
push_back times:46
loop times:46
push_back times:47
loop times:47
push_back times:48
loop times:48
push_back times:49
loop times:49
push_back times:50
loop times:50
push_back times:51
loop times:51
push_back times:52
loop times:52
push_back times:53
loop times:53
push_back times:54
loop times:54
push_back times:55
loop times:55
push_back times:56
loop times:56
push_back times:57
loop times:57
push_back times:58
loop times:58
push_back times:59
loop times:59
push_back times:60
loop times:60
push_back times:61
loop times:61
push_back times:62
loop times:62
push_back times:63
loop times:63
push_back times:64
loop times:127
push_back times:65
loop times:65
push_back times:66
loop times:66
push_back times:67
loop times:67
push_back times:68
loop times:68
push_back times:69
loop times:69
push_back times:70
loop times:70
push_back times:71
loop times:71
push_back times:72
loop times:72
push_back times:73
loop times:73
push_back times:74
loop times:74
push_back times:75
loop times:75
push_back times:76
loop times:76
push_back times:77
loop times:77
push_back times:78
loop times:78
push_back times:79
loop times:79
push_back times:80
loop times:80
push_back times:81
loop times:81
push_back times:82
loop times:82
push_back times:83
loop times:83
push_back times:84
loop times:84
push_back times:85
loop times:85
push_back times:86
loop times:86
push_back times:87
loop times:87
push_back times:88
loop times:88
push_back times:89
loop times:89
push_back times:90
loop times:90
push_back times:91
loop times:91
push_back times:92
loop times:92
push_back times:93
loop times:93
push_back times:94
loop times:94
push_back times:95
loop times:189
push_back times:96
loop times:96
push_back times:97
loop times:97
push_back times:98
loop times:98
push_back times:99
loop times:99


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值