84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
书上说,以下代码创建的对象包含多次的指定字符,重复次数由计数器指定
请问这是怎么回事?,括号里的直接初始化(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
。