Проект: типичная программа чата. Сервер должен получать текст от нескольких клиентов и рассылать каждый ввод всем клиентам.
На сервере я хочу, чтобы каждый клиент имел структуру, содержащую сокет fd и std::queue. Каждая структура будет находиться в std::list.
Когда входные данные получены из клиентского сокета, я хочу пройтись по списку структур и поместить новые входные данные в очередь каждой клиентской структуры. Строка является новой[ed], потому что я не хочу, чтобы копии строки умножались на всех клиентов. Но я также хочу избежать головной боли, связанной с разбросом нескольких указателей на строку и принятием решения, когда пришло время окончательно удалить строку.
Является ли это подходящим случаем для общего указателя? Если да, увеличивается ли значение shared_ptr каждый раз, когда я помещаю их в очередь, и уменьшается ли оно, когда я извлекаю их из очереди?
Спасибо за любую помощь.