◐ Shell
clean mode source ↗

std::set_union - cppreference.com

Da cppreference.com.

Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate.

La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui.

Click here for the English version of this page

<metanoindex/>

<tbody> </tbody>

Elemento definito nell'header

<algorithm>

template< class InputIt1, class InputIt2, class OutputIt > OutputIt set_union( InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, OutputIt d_first );

(1)

template< class InputIt1, class InputIt2, class OutputIt, class Compare > OutputIt set_union( InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, OutputIt d_first, Compare comp );

(2)

Costruisce un inizio gamma smistati d_first costituito da tutti gli elementi presenti in una o entrambe le gamme filtrate [first1, last1) e [first2, last2). La prima versione si aspetta che sia l'ingresso che varia da ordinare con operator<, la seconda versione si aspetta che essere ordinati con il confronto comp data funzione. Se qualche elemento si trova m volte in [first1, last1) e n volte in [first2, last2), quindi tutti gli elementi m verranno copiati dal [first1, last1) a d_first, mantenere l'ordine, e poi esattamente std::max(n-m, 0) elementi verranno copiati dal [first2, last2) a d_first, anche mantenere l'ordine. L'intervallo risultante non possono sovrapporsi uno dei campi di ingresso.

Original:

Constructs a sorted range beginning at d_first consisting of all elements present in one or both sorted ranges [first1, last1) and [first2, last2). The first version expects both input ranges to be sorted with operator<, the second version expects them to be sorted with the given comparison function comp. If some element is found m times in [first1, last1) and n times in [first2, last2), then all m elements will be copied from [first1, last1) to d_first, preserving order, and then exactly std::max(n-m, 0) elements will be copied from [first2, last2) to d_first, also preserving order. The resulting range cannot overlap with either of the input ranges.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Parametri

first1, last1 -

il primo ingresso ordinato gamma

Original:

the first input sorted range

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

first2, last2 -

il secondo ingresso ordinato gamma

Original:

the second input sorted range

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

comp - comparison function which returns ​true if the first argument is less than the second.

The signature of the comparison function should be equivalent to the following:

bool cmp(const Type1 &a, const Type2 &b);

The signature does not need to have const &, but the function must not modify the objects passed to it.
The types Type1 and Type2 must be such that objects of types InputIt1 and InputIt2 can be dereferenced and then implicitly converted to Type1 and Type2 respectively. ​

Type requirements
-InputIt1 must meet the requirements of InputIterator.
-InputIt2 must meet the requirements of InputIterator.
-OutputIt must meet the requirements of OutputIterator.

Valore di ritorno

Iterator oltre la fine della gamma costruito.

Original:

Iterator past the end of the constructed range.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Complessità

A confronto la maggior parte 2·(N1+N2-1), dove N1 = std::distance(first1, last1) e N2 = std::distance(first2, last2).

Original:

At most 2·(N1+N2-1) comparisons, where N1 = std::distance(first1, last1) and N2 = std::distance(first2, last2).

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Possibile implementazione

First version
template<class InputIt1, class InputIt2, class OutputIt>
OutputIt set_union(InputIt1 first1, InputIt1 last1,
                   InputIt2 first2, InputIt2 last2,
                   OutputIt d_first)
{
    for (; first1 != last1; ++d_first) {
        if (first2 == last2)
            return std::copy(first1, last1, d_first);
        if (*first2 < *first1) {
            *d_first = *first2++;
        } else {
            *d_first = *first1;
            if (!(*first1 < *first2))
                ++first2;
            ++first1;
        }
    }
    return std::copy(first2, last2, d_first);
}
Second version
template<class InputIt1, class InputIt2,
         class OutputIt, class Compare>
OutputIt set_union(InputIt1 first1, InputIt1 last1,
                   InputIt2 first2, InputIt2 last2,
                   OutputIt d_first, Compare comp)
{
    for (; first1 != last1; ++d_first) {
        if (first2 == last2)
            return std::copy(first1, last1, d_first);
        if (comp(*first2, *first1)) {
            *d_first = *first2++;
        } else {
            *d_first = *first1;
            if (!comp(*first1, *first2))
                ++first2;
            ++first1;
        }
    }
    return std::copy(first2, last2, d_first);
}

Esempio

Vedi anche

restituisce true se un insieme è un sottoinsieme di un altro

Original:

returns true if one set is a subset of another

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(funzione di modello) [modifica]

calcola la differenza tra due insiemi

Original:

computes the difference between two sets

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(funzione di modello) [modifica]

calcola l'intersezione di due insiemi

Original:

computes the intersection of two sets

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(funzione di modello) [modifica]

calcola la differenza simmetrica tra due insiemi

Original:

computes the symmetric difference between two sets

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(funzione di modello) [modifica]