ユニークな文字列を順次, 生成する関数
C++において, 適当な文字列を元に,
ユニークな文字列を順次, 生成する関数を作りたいと思っています.
(LISPで云う, 関数gensym()と似た役割を持つ関数です.)
例えば, "hoge"というstringを元に,
"hoge0", "hoge1", "hoge4", "hoge8", "hoge100", ....,
といったように,
stringが互いに重複しないように,
適当な数字を連結した文字列を順次生成したいのです.
以下のように, 私なりの方法を考えてみたのですが,
これだと, 今まで生成したstringを保存するhoge_setが必要になります.
何かより良い(シンプル, 効率的な)方法がありましたら,
教えていただけますでしょうか? よろしくお願い致します.
(乱数を用いた方法)
1. 元となるstring型の変数nameを, "hoge" で初期化.
既に作成したstring文字列を保存する, set < string > hoge_setを宣言.
2. 乱数を生成し, それをnameにappendしたものを, string型の変数name2に代入.
3. 同じ文字列が存在したら, 2. に戻る.
同じ文字列が存在しなかったら, hoge_setに追加する.
お礼
わかりやすい説明ありがとうございます。