84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
书上说,以下代码创建的对象包含多次的指定字符,重复次数由计数器指定
请问这是怎么回事?,括号里的直接初始化(10,‘9’)是什么意思?
std:string all_nines(10,'9');//all_nines="9999999999"
走同样的路,发现不同的人生
此处调用了std::string的构造函数,你可以把这个构造函数的形式理解为std::string(count, ch);,即第一个参数为重复字符的个数,第二个参数为用于重复的字符。例如:
std::string
std::string(count, ch);
std::string s1(4, 'a'); // s1 为 "aaaa" std::string s2(5, '-'); // s2 为 "-----"
实际上std::string是std::basic_string这个模板类在特定参数下的别名(typedef):
std::basic_string
typedef
typedef basic_string<char, char_traits<char>, allocator<char>> 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'表示这些字符的初始值。
string
10
'9'
类似的还有vector<int> arr(100, 0)表示一个大小为100元素全部初始化为0的vector。
vector<int> arr(100, 0)
100
0
vector
简化的原理
此处调用了
std::string
的构造函数,你可以把这个构造函数的形式理解为std::string(count, ch);
,即第一个参数为重复字符的个数,第二个参数为用于重复的字符。例如:实际的原理
实际上
std::string
是std::basic_string
这个模板类在特定参数下的别名(typedef
):而真正的构造函数是
其中第三个参数有默认值,在调用时候可以不提供,从而转化成了
std::string(count, ch);
。http://en.cppreference.com/w/cpp/string/basic_string/basic_string
就是
string
的一个构造函数,第一个参数10
表示有多少个字符,第二个参数'9'
表示这些字符的初始值。类似的还有
vector<int> arr(100, 0)
表示一个大小为100
元素全部初始化为0
的vector
。