Re[4]: Об эффективности программ
От: Pavel Dvorkin Россия  
Дата: 07.10.05 12:15
Оценка: -1
Здравствуйте, 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>Можно. Но уволят.

With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.