[解決済み] 2つのSTL集合の交差点はどのように見つけるのですか?
2022-11-08 14:53:12
質問
C++で2つのstd::setの間の交差点を見つけようとしていますが、ずっとエラーになっています。
私はこのために小さなサンプルテストを作成しました
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
int main() {
set<int> s1;
set<int> s2;
s1.insert(1);
s1.insert(2);
s1.insert(3);
s1.insert(4);
s2.insert(1);
s2.insert(6);
s2.insert(3);
s2.insert(0);
set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end());
return 0;
}
後者のプログラムは出力を生成しませんが、私は新しいセット(仮に
s3
と呼ぶことにします)に次のような値が含まれることを期待します。
s3 = [ 1 , 3 ]
そのかわり、エラーが出ます。
test.cpp: In function ‘int main()’:
test.cpp:19: error: no matching function for call to ‘set_intersection(std::_Rb_tree_const_iterator<int>, std::_Rb_tree_const_iterator<int>, std::_Rb_tree_const_iterator<int>, std::_Rb_tree_const_iterator<int>)’
このエラーから私が理解したことは、このエラーは
set_intersection
に定義がなく、それを受け入れる
Rb_tree_const_iterator<int>
をパラメータとして受け取ります。
さらに、おそらく
std::set.begin()
メソッドはそのような型のオブジェクトを返します。
の交差点を見つける良い方法はありますか?
std::set
を見つける良い方法はありますか?できれば組み込み関数がいいのですが?
どのように解決するのですか?
の出力イテレータを用意していません。
set_intersection
template <class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator set_intersection ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result );
のようにすることで修正します。
...;
set<int> intersect;
set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(),
std::inserter(intersect, intersect.begin()));
を必要とします。
std::insert
のイテレータが必要です。このセットは今のところ空なので そのため
std::back_inserter
または
std::front_inserter
というように、setはこれらの操作をサポートしていません。
関連
-
[解決済み] テスト
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】'cout'は型名ではない
-
[解決済み】C++の余分な資格エラー
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み】派生クラスでオーバーライドされた関数が、ベースクラスの他のオーバーロードを隠してしまうのはなぜですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] コピーエリジョンと戻り値の最適化とは何ですか?