Advertisement
Advertisement
| 05.15.2008 at 04:53PM PDT, ID: 23407083 |
|
[x]
Attachment Details
|
||
|
[x]
The Solution Rating System
|
||
|
With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.
Your Input Matters If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support. Thank you! |
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: |
template <class Iterator>
struct array_intersection_iterator
{
Iterator idx;
Iterator end;
};
template <class InputContainer, class OutputContainer>
inline void find_intersection(InputContainer* array, const size_t n,
OutputContainer& result)
{
typedef typename InputContainer::iterator sub_iterator;
typedef array_intersection_iterator<sub_iterator> iterator_type;
iterator_type* it = new iterator_type[n];
// First sort all the arrays
for (std::size_t i = 0; i < n; ++i) {
std::sort(array[i].begin(), array[i].end());
it[i].idx = array[i].begin();
it[i].end = array[i].end();
}
// Now find all the common elements
std::size_t match, i;
for (; it[0].idx < it[0].end; ++it[0].idx) {
for (match = i = 1; i < n; ++i) {
while (!(*it[i].idx > *it[0].idx) && it[i].idx < it[i].end) {
if (*it[i].idx == *it[0].idx) ++match;
++it[i].idx;
}
}
if (match == n)
result.push_back(*it[0].idx);
}
delete[] it;
}
|