84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
书上说,以下代码创建的对象包含多次的指定字符,重复次数由计数器指定
请问这是怎么回事?,括号里的直接初始化(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, 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'表示这些字符的初始值。
string
10
'9'
类似的还有vector arr(100, 0)表示一个大小为100元素全部初始化为0的vector。
vector 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 arr(100, 0)
表示一个大小为100
元素全部初始化为0
的vector
。