📄 list5-8.cpp
字号:
// Listing 5-8
// This program uses global STL containers
// as interthread communication mechanisms
#define INCL_DOSPROCESS
#include <os2.h>
#include <iostream.h>
#include <process.h>
#include <stddef.h>
#include <rational.h>
#include <set.h>
#include <algo.h>
rational M(3,4);
typedef set<rational,rational> rational_set;
typedef set<rational,rational>::iterator rational_iterator;
rational_set SetA,SetB,SetC;
rational_iterator A,B,C;
void threadA(void *X)
{
rational Z(5,4);
rational W(1,8);
SetA.insert(W);
SetA.insert(Z);
set_intersection(SetA.begin(),SetA.end(),SetB.begin(),SetB.end(),
inserter(SetC,SetC.begin()),Z);
SetB.insert(W);
SetA.erase(SetA.begin(),SetA.end());
}
void threadB(void *X)
{
rational Q(2,3);
rational R(5,5);
SetB.insert(Q);
SetB.insert(R);
SetA.insert(Q);
SetA.insert(M);
set_union(SetC.begin(),SetC.end(),SetB.begin(),SetB.end(),
inserter(SetA,SetA.begin()),Q);
}
void main(void)
{
unsigned long ThreadA;
unsigned long ThreadB;
ThreadA = _beginthread(threadA,4096,NULL);
ThreadB = _beginthread(threadB,4096,NULL);
DosWaitThread(&ThreadA,DCWW_WAIT);
DosWaitThread(&ThreadB,DCWW_WAIT);
A = SetA.begin();
B = SetB.begin();
C = SetC.begin();
cout << "Set A contains ";
while(A != SetA.end())
{
cout << *A << " ";
A++;
}
cout << endl << "Set B contains ";
while(B != SetB.end())
{
cout << *B << " ";
B++;
}
cout << endl << "Set C contains ";
while(C != SetC.end())
{
cout << *C << " ";
C++;
}
cout << endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -