Проект: типичная чат-программа. Сервер должен получать текст от нескольких клиентов и вентилировать каждый вход для всех клиентов.Это подходящее использование для shared_ptr?
На сервере я хочу, чтобы каждый клиент имел структуру, содержащую сокет fd и std :: queue. Каждая структура будет в std :: list.
Как вход получен из сокета клиента Я хочу перебрать список структур и поместить новый ввод в каждую очередь клиентской структуры. Строка новая [ed], потому что я не хочу, чтобы копии строки умножались на всех клиентов. Но я также хочу избежать головной боли, чтобы иметь несколько указателей на строку, разложенную и решающую, когда пришло время окончательно удалить строку.
Это подходящий случай для общего указателя? Если да, то shared_ptr увеличивается каждый раз, когда я вставляю их в очередь и уменьшаюсь, когда я вывожу их из очереди?
Спасибо за любую помощь.
Да, хотя я считаю, что это не подходит для 'std :: list'. 'vector' FTW! :) –
@Billy ONeal - почему вектор? Выбор списка OP лучше для чего-то, где соединения постоянно добавляются и удаляются. – Duck
@ Duck: 'std :: list' имеет плохую локальность, что обычно ухудшает производительность более чем на несколько дополнительных копий. –