私は次のことをしたい:
time_heap.insert(aid.arrival(event)!=NULL);
つまり、返された値がaid.arrival(event)
time_heap でない場合は、その値を time_heap に挿入しますNULL
。
これは、私のプログラムのメイン コントロールで頻繁に発生する操作であり、C++ で簡単に実行できる方法があることを望んでいました (それを処理する独自の関数を定義する以外に)。
186 void insert_event(Event* value) {
187 heap.push_back(value); // expand size of heap
188 int i = heap.size() - 1; // set heap index to that of "value"
189 int parent = floor((i - 1)/2);
190
191 while (parent >= 0 && parent < heap.size()) { //check that parent is valid
192 if (*heap[parent] > *value) {
193 heap[i] = heap[parent];
194 heap[parent] = value; // if "value" is smaller than parent move it up in heap (swap)
195 i = parent; // set new index of "value"
196 parent = floor((i - 1)/2); // set new parent of "value"
197 }
198 else // if parent is not larger, value satisfies min-heap condition (since all below are lower, too)
199 break; // (i.e. we are done)
200 }
201 }