+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 1 su 1

Discussione: Problema con iteratori

  1. #1
    Anna95 non è in linea Novello
    Post
    1

    Problema con iteratori

    Salve,
    cominciando col fare alcuni esercizi sugli iteratori mi sono imbattuta in un problema che credo di illustrare più rapidamente col seguente breve codice:

    codice:
    #include “stdafx.h”
    #include <iostream>
    #include <vector>
    #include <deque>
    #include <list>
    using namespace std;
    
    int main()
    {
    //	VECTOR
    vector<double> v1 = { 1,3,5,7,9 };
    vector<double> v2 = { 2,4,6,8,10,12,14};
    v1.insert(begin(v1) + 2, begin(v2) + 2, end(v2) – 2);	// OK
    
    //	DEQUE
    deque<double> d1 = { 100,200,300,400,500 };
    deque<double> d2 = { 11,22,33,44,55,66,77 };
    d1.insert(begin(d1) + 2, begin(d2) + 2, end(d2)-2);          // OK
    
    //	LIST
    list<double> l1 = {111,222,333,444,555};
    list<double> l2 = { 23,34,45,56,67,78,89 };
    //l1.insert(begin(l1), begin(l2), end(l2));                         // OK
    
    //l1.insert(begin(l1)+2, begin(l2)+2, end(l2)-2);              // ERRORE !!!
    
    //WORKAROUND:
    auto a = begin(l1);
    a++;
    a++;
    auto b = begin(l2);
    b++;
    b++;
    auto c = end(l2);
    c–;
    c–;
    
    l1.insert(a, b, c);                                              // OK,ora compila e inserisce nelle posizioni volute
    
    return 0;
    }
    In pratica quello che non riesco a capire è perchè con vector e deque posso passare al metodo insert dei parametri come nell’esempio (sfruttando quindi una ‘aritmetica degli iteratori’) mentre la stessa sintassi non è accettata lavorando con una list.

    Ringrazio chiunque voglia darmi delucidazioni in merito, ciao
    Anna95
    Ultima modifica di AntonioG; 18-12-2016 23:08  Motivo: Tag CODE per il codice

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi