並集運算
總結主要是記錄下來供自己日後參考, 因為一段時間不用就忘了, 所以是按照自己容易理解的方式寫的, 不過任然希望各位可以指出錯誤和欠缺的地方, 共同進步。
// 1
template outputiterator set_union (inputiterator1 first1, inputiterator1 last1,
inputiterator2 first2, inputiterator2 last2,
outputiterator result);
// 2
template outputiterator set_union (inputiterator1 first1, inputiterator1 last1,
inputiterator2 first2, inputiterator2 last2,
outputiterator result, compare comp);
explicit insert_iterator (container& x, typename container::iterator i) : container(&x), iter(i) {}
知道該函式接受兩個引數, 第乙個引數是乙個容器, 第二個引數是乙個迭代器。當然也可以使用下面這種方式獲取迭代器:
auto iter = std::insert(result, std::begin(result));
這個也是參考**上示例的方式。
#include #include #include // for pair<> & make_pair<>()
#include #include #include using std::cout;
using std::endl;
using std::string;
using intset = std::set;
void setunion()
; intset second = ;
cout << "第乙個集合中的元素時:\n";
for (auto it : first) cout << endl;
cout << "第二個集合中的元素時:\n";
for (auto it : second) cout << endl;
intset result;
std::insert_iteratorit(result, result.begin());
std::set_union(first.begin(), first.end(), second.begin(), second.end(), it);
cout << "集合的並集是:" << endl;
for (auto it : result) cout << endl;
}
class people
people() = default;
friend std::ostream& operator<<(std::ostream& out, const people& people);
friend std::istream& operator>>(std::istream& in, people& people); // 方便輸出
// 將名字打包返回, 方便下乙個進行名字的比較函式, 那個函式沒有宣告為友元函式, 所以無法直接訪問該類的私有變數
// 此處切不可返回引用, 只能使用值返回的方式, 否則會報錯
std::pairgetname() const
private:
string m_firstname;
string m_secondname;
}; std::ostream& operator<<(std::ostream& out, const people& people)
std::istream& operator>>(std::istream& in, people& people)
bool operator<(const people& otherpeople) const
struct peoplecomp
}pcomp;
void settest()
, , };
peopleset second = , , };
peopleset result;
cout << "第乙個集合中的元素是:\n";
for (auto it : first) cout << endl;
cout << "第二個集合中的元素是:\n";
for (auto it : second) cout << endl;
std::insert_iteratorit(result, result.begin());
set_union(first.begin(), first.end(), second.begin(), second.end(), it, pcomp);
cout << "二者的並集是:\n";
for (auto it : result) cout << endl;
}
集合運算 並 交 差運算
已知所給集合 a 和 b,求 a 與 b 的並集 c c a b 已知所給集合 a 和 b,求 a 與 b 的交集 c c a b 已知所給集合 a 和 b,求 a 與 b 的差集 c c a b 離散數學中的簡單的集合運算,由c語言編寫,思路非常簡單,如下 include intinterecti...
jmu ds 集合的並交差運算
7 1 jmu ds 集合的並交差運算 15 分 有兩個整數集合a和b,現在要求實現集合的並 交 差運算。例如a b 則集合的並c a b 而集合的交 c a b 集合的差c a b 集合a和b中元素個數在1 100之間。三行,第一行分別為集合a,b的個數 第二行為a集合的資料 第三行為b集合的資料...
multiset集合容器的集合運算 並 交 差
set和multiset的內部通常是採用平衡二叉樹來實現。當放入元素時,會按照一定的排序方法自動排序,預設是按照less 排序規則來排序。這種自動排序的特性加速了元素查詢的過程,但問題是 不可以直接修改 set或 multiset 容器中的元素值,因為這樣就違反了元素自動排序的規則。如果想修改乙個元...