2011-12-05 33 views
8

治療可一std::vector<char>像這樣的陣列進行處理:能標準::向量像數組

std::vector<char> v(10); 
strncpy(&v[0], "hello", 9); // <-- Is this safe? 
+0

是的,我打算輸入std :: vector 。讓我試着編輯我原來的帖子。 – user1061590

+2

@TokenMacGuy:那不是'strncpy'的工作方式...... –

+0

我知道這個問題很簡單直接,但是你不應該僅僅依靠標題來彌補問題,而是增加一個真正的問題主體,一個問題。 –

回答

13

是的,這很好。從C++ 03開始,vector需要連續存儲。

從C++ 11開始,順便提一下std::string也是如此;您可以將v.data()作爲&v[0]的同義詞(當v爲空時也是有效的)。

+0

您提到的*作爲C++ 03 .. *讓我對它是如何在C++ 11中有所懷疑的,所以爲了確認AFAIK,即使在C中,std :: Vector也需要連續存儲++ 11,這是正確的嗎? –

+0

@Als是的,在C++ 11中沒有改變。 – bames53

+0

是的。新標準不會改變vector的存儲要求。在英語中,「asof」與「since」大致意思相同,但意味着更近的事件時間表。 :) –