2011-06-23 15 views
8

Recibo el error de tiempo de ejecución en el siguiente código. Por favor, hágamelo saber, ¿puedo copiar los elementos vectoriales en el set?¿Puedo copiar elementos 'vector' en 'conjunto' usando el algoritmo de copia?

#include <iostream> 
#include <vector> 
#include <set> 
using namespace std; 
int main() 
{ 
    vector<int> v; 
    set<int> kk; 
    set<int>::iterator itr; 
    for (int i = 0; i < 6; i++) 
    { 
     v.push_back(i * 2); 
    } 
    copy(v.begin(), v.end(), inserter(kk, itr)); 
} 

Respuesta

0

Debe inicializar el iterador.

set<int>::iterator itr = kk.end(); 
1

Probar:

copy(v.begin(), v.end(),inserter(kk, kk.end())); 
            // ^^^^^^^^ You need a real iterator. 
20

Usted no se ha inicialización de itr:

set<int>::iterator itr = kk.begin(); 

O elimine por completo itr:

copy(v.begin(), v.end(), inserter(kk, kk.begin())); 

En este caso, simplemente podría inicializar kk por lo tanto (pero si quieres añadir akk siguen la línea de arriba):

set<int> kk(v.begin(), v.end()); 
10

Si el objetivo es crear un conjunto de los elementos del vector (en lugar de actualizar un conjunto ya existente que podría tener algunos elementos), luego hazlo usando el constructor:

set<int> s(v.begin(), v.end()); 
Cuestiones relacionadas