[解決済み] std::vector<std::string>を構築して、それらをソートするにはどうすればよいのでしょうか?
2022-01-25 20:58:31
質問
私はソートする必要がある文字列の束を持っています。これを行うには、std::vectorが最も簡単な方法だと思います。しかし、私は今までベクトルを使用したことがないので、いくつかの助けを求めています。
英数字順に並べるだけで、特別なことはしていません。確かに、string::compare 関数でうまくいきますね。
その後、ソートされていることを確認するために、どのように反復処理すればよいのでしょうか?
今のところ、こんな感じです。
std::sort(data.begin(), data.end(), std::string::compare);
for(std::vector<std::string>::iterator i = data.begin(); i != data.end(); ++i)
{
printf("%s\n", i.c_str);
}
解決方法は?
を実行すればよいのです。
std::sort(data.begin(), data.end());
そして、文字列をソートしてくれます。そして、文字列が順番通りに並んでいるかどうかをチェックします。
if(names.empty())
return true; // empty vector sorted correctly
for(std::vector<std::string>::iterator i=names.begin(), j=i+1;
j != names.end();
++i, ++j)
if(*i > *j)
return false;
return true; // sort verified
特に
std::string::compare
は比較演算子として使うことはできません。
sort
はそれを望んでいるのです。第一引数が第二引数より小さければ真を、そうでなければ偽を返します。もし
sort
のようにすると、単に
operator<
で、これはまさにその通りです(つまり
std::string
を返すようにします。
first.compare(second) < 0
).
関連
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] std::string を const char* または char* に変換する方法
-
[解決済み] どうすれば、文字列中のリテラルな中抜き文字を印刷し、また.formatを使用することができるのでしょうか?
-
[解決済み] 辞書をキーでソートするにはどうしたらいいですか?
-
[解決済み] テキストファイルを文字列変数に読み込んで、改行を除去するには?
-
[解決済み] std::stringのインスタンスを小文字に変換する方法
-
[解決済み] std::vector にある項目が存在するかどうかを調べるには?
-
[解決済み] std::stringをintに変換するにはどうしたらいいですか?
-
[解決済み] std::vector<> からインデックスで要素を消すにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された