Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Sinclair, sorry, а не мог бы ты подсказать, как здесь эффективно сконкатенировать все же массив строк при том, что количество их определится в момент конкатенации?
S>С массивом все вообще просто. См. string.Join.
+
PD>>Твой первый пример хорош, но там жестко 3 строки. На C++ конкатенацию массива строк в новую строку (я имею в виду не string из STL, а char*) я все же напишу однопроходным алгоритмом и при этом не будут использоваться никакие промежуточные буферы. Потому что задача по определению однопроходная.
S>Это как, интересно?
Не понял, ты спрашиваешь, как в C++ сделать ? Я уже отвечал.
http://www.rsdn.ru/Forum/Message.aspx?mid=1424567&only=1Автор: Pavel Dvorkin
Дата: 07.10.05
S>Не так ли:
S>S>public static string Join(IEnumerable<string> strings)
S>{
S> int len=0;
S> foreach(string s in strings)
S> len+=s.Length;
S> StringBuilder sb = new StringBuilder(len); // избегаем перевыделений
S> foreach(string s in strings)
S> sb.Append(s);
S> return sb.ToString();
S>}
S>
S>?
Да, то же самое. Спасибо.
PD>>Здесь это можно, используя только string, а не StringBuilder ?
S>Можно. Но уволят.