項目:典型的聊天程序。服務器必須接收來自多個客戶端的文本,並將每個輸入扇出給所有客戶端這是shared_ptr的合適用法嗎?
在服務器中,我希望每個客戶端都有一個包含套接字fd和std ::隊列的結構。每個結構將在std :: list上。
當從客戶端套接字接收到輸入時,我想遍歷結構列表並將新輸入放入每個客戶端結構的隊列中。一個字符串是新的[編輯],因爲我不希望字符串的副本乘以所有的客戶端。但我也想避免讓多個指向字符串的指針展開並決定何時最終刪除字符串的問題。
這是一個適合共享指針的場合嗎?如果是這樣,每次我將他們推入隊列時,shared_ptr是否遞增,並在隊列中彈出時遞減?
感謝您的任何幫助。
是的,雖然我認爲它不適合使用'std :: list'。 '矢量'FTW! :) – 2012-03-13 02:01:12
@Billy ONeal - 爲什麼是矢量?對於不斷添加和刪除連接的內容,OP的列表選擇似乎更好。 – Duck 2012-03-13 02:07:09
@Duck:'std :: list'具有較差的局部性,這通常會使性能超過一些額外的副本。 – 2012-03-13 02:09:41