+vector<int32_t> mergeJoin(vector<int32_t> v1, vector<int32_t> v2){
+ vector<int32_t> v;
+ vector<int32_t>::iterator i=v.begin();
+ vector<int32_t>::iterator i1=v1.begin();
+ vector<int32_t>::iterator i2=v2.begin();
+ int k;
+
+ while((i1!=v1.end()) && (i2!=v2.end())){
+ k = strcmp((const char*) tree->get_text(*i1),
+ (const char*) tree->get_text(*i2));
+ if (k==0)
+ {
+ i = v.insert( i, *i1 );
+ //advance left
+ i1++;
+ //advance right
+ i2++;
+ }
+ else if (k<0) i1++; //advance left
+ else i2++; //advance right
+ }
+ return(v);
+}
+
+void printIndex(const char * label, vector<int32_t> v){
+ vector<int32_t>::iterator i=v.begin();
+ if (i!=v.end()) {
+ printf("%s-vector: [%i", label, *i);
+ for (++i; i!=v.end(); ++i)
+ printf(",%i", *i);
+ printf("]\n");
+ }
+}