我試圖移植一些我大量使用System.arraycopy方法的Java代碼,並想知道在C++中是否有等價物。基本上我想要有n個字節的數組並將它們組合成一個大數組。每個初始數組的長度都是可變的,所以我不想經歷計算結束數組長度的箍,然後一次將整個數組填充到一個位置,因爲這感覺很慢,我確信這操作已經優化。但是,我無法找到這種優化方式(儘管我可能會使它比應該更復雜)。C++相當於Java的System.arraycopy
下面是一些僞(Java)代碼來說明我想要做什麼。
byte[] a = new byte[]{0x00, 0x01, 0x02};
byte[] b = new byte[][0x03, 0x04, 0x05];
byte[] ab = new byte[a.length+b.length];
System.arraycopy(ab, 0, a, 0, a.length);
System.arraycopy(ab, a.length+1, b, 0, b.length);
//Now, I would expect ab to look like {0x00, 0x01, 0x02, 0x03, 0x04, 0x05}
就像我說的,這可能是C++簡單,但我會做這麼多,多次想確保我儘可能有效做越好。
是否有某些原因導致您無法將數據存儲在標準模板庫向量中而不是搞亂數組? – George 2010-10-02 03:13:57
Preety確定theres一個std algoritm ...也許std ::複製? – Tom 2010-10-02 03:14:34
@George:我想他是要求在C++中執行相當於'System.arraycopy()'的最佳方法,因爲OP剛剛開始使用C++並且沒有聽說過'std :: vector'。 – 2010-10-02 03:15:28