c++prime 中提到的用计数器初始化对象
怪我咯
怪我咯 2017-04-17 13:28:11
0
3
546

书上说,以下代码创建的对象包含多次的指定字符,重复次数由计数器指定

请问这是怎么回事?,括号里的直接初始化(10,‘9’)是什么意思?
std:string all_nines(10,'9');//all_nines="9999999999"
怪我咯
怪我咯

走同样的路,发现不同的人生

reply all (3)
PHPzhong

简化的原理

此处调用了std::string的构造函数,你可以把这个构造函数的形式理解为std::string(count, ch);,即第一个参数为重复字符的个数,第二个参数为用于重复的字符。例如:

std::string s1(4, 'a'); // s1 为 "aaaa" std::string s2(5, '-'); // s2 为 "-----"

实际的原理

实际上std::stringstd::basic_string这个模板类在特定参数下的别名(typedef):

typedef basic_string, allocator> string;

而真正的构造函数是

basic_string( size_type count, CharT ch, const Allocator& alloc = Allocator() );

其中第三个参数有默认值,在调用时候可以不提供,从而转化成了std::string(count, ch);

    巴扎黑

    http://en.cppreference.com/w/cpp/string/basic_string/basic_string

      小葫芦

      就是string的一个构造函数,第一个参数10表示有多少个字符,第二个参数'9'表示这些字符的初始值。

      类似的还有vector arr(100, 0)表示一个大小为100元素全部初始化为0vector

        Latest Downloads
        More>
        Web Effects
        Website Source Code
        Website Materials
        Front End Template
        About us Disclaimer Sitemap
        php.cn:Public welfare online PHP training,Help PHP learners grow quickly!