現在、ポインタ型のset<int>に対してset_intersectionを使おうとしているのですが、以下のエラーが出てしまいます。
関数呼び出しが正常に行えないという事なのでおそらく引数が間違っているのだと思うのですが、自分では解決できませんでした。
この原因について分かる方いましたら、ご教示のほどよろしくお願いします。
setIntersection.cc:21:76: error: no matching function for call to 'inserter' ...as1->end(), as2->begin(), as2->end(), inserter(rslt, rslt->end()));
記述したプログラムはこちらです。
C++
1#include <iostream> 2#include <set> 3#include <algorithm> 4#include <iterator> 5 6int main() { 7 std::set< int > *as1 = new std::set< int >(); 8 std::set< int > *as2 = new std::set< int >(); 9 std::set< int > *rslt = new std::set< int >(); 10 11 as1->insert(1); 12 as1->insert(2); 13 as1->insert(3); 14 15 as2->insert(1); 16 as2->insert(3); 17 18 std::set_intersection(as1->begin(), as1->end(), as2->begin(), as2->end(), std::inserter(rslt, rslt->end())); 19 20 for (std::set< int >::iterator it = rslt->begin(); it != rslt->end(); it++) 21 printf("%d\n", *it); 22 23 return 0; 24}
ポインタ型でなく通常のset<int>では正しく動作しました。
C++
1#include <iostream> 2#include <set> 3#include <algorithm> 4#include <iterator> 5 6int main() { 7 std::set< int > as1 = {1, 2, 3}; 8 std::set< int > as2 = {1, 3}; 9 std::set< int > rslt; 10 11 std::set_intersection(as1.begin(), as1.end(), as2.begin(), as2.end(), std::inserter(rslt, rslt.end())); 12 13 for (std::set< int >::iterator it = rslt.begin(); it != rslt.end(); it++) 14 printf("%d\n", *it); 15 16 return 0; 17}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/24 05:39