public member function
<string>

std::basic_string::reserve

void reserve (size_type n = 0);
請求更改容量
請求將字串容量調整為計劃中的大小更改,最多達到n個字元的長度

如果n大於當前字串容量,該函式會導致容器將其容量增加到n個字元(或更多)。

在所有其他情況下,它被視為縮小字串容量的非約束性請求:容器實現可以自由地以其他方式進行最佳化,並使basic_string容量大於n

此函式對字串長度沒有影響,也不會改變其內容。

引數

n
basic_string的計劃長度
請注意,生成的字串容量可以等於或大於n
成員型別size_type是一種無符號整型型別。

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// string::reserve
#include <iostream>
#include <fstream>
#include <string>

int main ()
{
  std::string str;

  std::ifstream file ("test.txt",std::ios::in|std::ios::ate);
  if (file) {
    std::ifstream::streampos filesize = file.tellg();
    str.reserve(filesize);

    file.seekg(0);
    while (!file.eof())
    {
      str += file.get();
    }
    std::cout << str;
  }
  return 0;
}

此示例在basic_string物件中保留足夠的容量來儲存整個檔案,然後逐個字元地讀取。 透過為basic_string保留至少整個檔案大小的容量,我們嘗試避免物件str每次插入新字元都會使其長度超過其容量時可能遭受的所有自動重新分配。

複雜度

未指定,但通常是恆定的。

迭代器有效性

與此物件相關的任何迭代器、指標和引用都可能失效。

資料競爭

物件被修改。

異常安全

強保證: 如果丟擲異常,則 basic_string 中沒有任何更改。

如果n大於max_size,則會丟擲length_error異常。
如果該型別使用預設分配器,如果函式需要分配儲存空間但失敗,則會丟擲bad_alloc異常。

另見