2009-10-05 45 views

回答

18
#include <iostream> 
#include <string> 

int main() { 
    std::cout << std::string().max_size() << std::endl; 
    return 0; 
} 
+2

是的,有趣的是,'std :: string :: allocator_type()。max_size()'給出了一個不同的(更大的)答案。不知道這是爲什麼.. –

+0

分配器的'max_size()'的具體語義是相當模糊的。 –

+0

@Pavel:同意,但std :: allocator 應該返回「我可以理論上連續分配多少個T」。在我的系統上,這是'size_type(-1)'...但是'std :: string :: max()'約爲保守的奇怪的四分之一。我的意思是,如果分配器說它可能可以,爲什麼不嘗試讓它失敗,並用'std :: length_error'(因爲它會呢)? –