Я пытаюсь перенести некоторый Java-код, который сильно использует метод System.arraycopy и хочет знать, есть ли эквивалент в 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
Preety sure theres std algoritm ... может быть, std :: copy? – Tom
@George: Я думаю, он спрашивает, что лучший способ сделать эквивалент 'System.arraycopy()' в C++, поскольку OP только что начал с C++ и не слышал о 'std :: vector'. –