public member function
<string>

std::string::reserve

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

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

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

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

引數

n
字串的計劃長度
請注意,生成的字串容量可能等於或大於n
size_t 是一個無符號整數型別(與成員型別 string::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;
}

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

複雜度

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

迭代器有效性

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

資料競爭

物件被修改。

異常安全

強保證: 如果丟擲異常,string 中不會有任何更改。

如果n大於max_size,則會引發length_error異常。
如果函式需要分配儲存空間但失敗,則會丟擲 bad_alloc 異常。

另見