2011-07-10 116 views
3

爲什麼沒有std::basic_string<...>::back()成員函數?std :: string :: back()

的功能顯然是在那裏,我的意思是,一個可以寫

  • myString[myString.size()-1]

  • *myString.rbegin()

我是不是假設的可能性back(),以及兩者之間的一些錯誤的等價上面的方法?你可以說我的第二個版本足夠簡潔,但是爲什麼不提供一個函數,這個函數實現起來微不足道讓字符串離容器更近一步?有沒有我失蹤的警告?

謝謝。

+0

[獲取std :: string的最後一個元素]的可能的重複(http://stackoverflow.com/questions/4884548/get-the-last-element-of-a-stdstring) – Xeo

+1

也沒有'前面()'... –

+0

此外,我只是搜索'std :: string :: back',這個問題首先彈出... – Xeo

回答

9

std::string應該沒有這些功能,沒有什麼特別的理由,並且這個斷言由於它們已經被添加到即將出現的C++標準中而被支持。

+0

你確定它不只是MSVC嗎?它真的在標準草案中嗎? –

+0

是的,我在看n3290.pdf(FDIS)。 –

1

MSDN說有is one。並附上front()。也許你只是有一個古老的,繁雜的編譯器。

+0

MSVC9.0是一個古老的編譯器嗎? –

+3

公平起見,這看起來像這可能是一個C++ 0x加... –

+0

在MSDN鏈接,你可以看到,這個文檔只存在於VS 2010(否則你可以切換版本)。似乎最近增加了這兩個功能。 – Timbo

2

如果C++ 0x標準(或至少工作草案)是相信的,那麼現在確實存在front()back()

請參閱第21.4.5節。