搜尋

首頁  >  問答  >  主體

c++prime 中提到的用计数器初始化对象

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

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

全部回覆(3)我來回復

  • PHPz

    PHPz2017-04-17 13:30:11

    簡化的原理

    這裡呼叫了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<char, char_traits<char>, allocator<char>> string;

    而真正的建構子是

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

    其中第三個參數有預設值,在呼叫時候可以不提供,從而轉換成了std::string(count, ch);

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 13:30:11

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

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 13:30:11

    就是string的一個建構函數,第一個參數10表示有多少個字符,第二個參數'9'表示這些字符的初始值。

    類似的還有vector<int> arr(100, 0)表示一個大小為100元素全部初始化為0vector

    回覆
    0
  • 取消回覆