簡體   English   中英

使用std :: string :: size_type比size_t有什么好處嗎?

[英]Is there any benefit to using std::string::size_type over size_t?

我正在審查另一個開發人員的代碼,其中包含以下內容:

std::string name;
...
std::string::size_type colon = name.find(":");

我認為使用size_t會更容易理解並且同樣安全,因為STL標准聲明std::stringstd::basic_string<char, std::allocator> ,而std::allocator::size_typesize_t

他希望保證STL標准不可能改變以使這個假設無效; 如果標准可以改變,那么size_type將比size_t更安全。

這會發生嗎? 是否有任何其他原因使用size_type而不是size_t

size_type應該在容器類型上模板化的代碼中使用。 當你總是在std::string上運行代碼時,你可以使用size_t

我認為最好的方法是使用auto ,這樣你就可以自動符合函數返回的內容:

auto colon = name.find(":");

它避免了你描述的問題而且它縮短了很多。

正如larsmans在評論中提到的那樣,您可能希望將字符串索引存儲在struct或其他任何內容中,而無需使用變量來獲取返回類型。 這也是可行的:

struct StoreStringIndex {
    decltype(declval<std::string>().length()) length;
};

但是比std::string::size_type更復雜且不短。 因此,對於存儲內容,您可能希望使用類型的size_type ,但對於局部變量和內容,請使用auto

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM