Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++ stl] lista , insert e iterator

    ciao.
    ho il seguente codice:
    codice:
    void CShape::insertPoint(const glm::vec2& vertex2d, int position)
    {
    	iteratorPoints itBegin = m_listOfPoint.begin();
    
    	itBegin += 2;
    	m_listOfPoint.insert(itBegin , vertex2d);
    }
    typedefs:

    typedef list<glm::vec2> ListOfPoints;
    typedef list<glm::vec2>::iterator iteratorPoints;
    ListOfPoints m_listOfPoint;

    devo imparare bene gli iteratori , se faccio puntare l'iteratore all inizio della mappa con

    iteratorPoints = m_listOfPoint.begin();

    ho visto che la sintassi dell'insert(che è il motivo per cui ho scelto una lista, ovvero perchè è performante negli inserimenti)accetta un iterator e un valore da inserire.
    Ma come faccio a fare puntare per es al 5 elemento dall' inizio tramite la variabile position?
    int position = 5;
    ho provato a fare itBegin += position

    ma non ha funzionato.

    volevo poi sapere se con il c++ 11 esistono percaso degli iteratori range oltre agli iteratori normali.

    grazie.

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    In caso di dubbio sull'avanzamento di iteratori usa std::advance()
    http://en.cppreference.com/w/cpp/iterator/advance
    o std::next() (in C++11)
    http://en.cppreference.com/w/cpp/iterator/next
    o std:rev() per tornare indietro.
    http://en.cppreference.com/w/cpp/iterator/prev


    codice:
    void CShape::insertPoint(const glm::vec2& vertex2d, int position)
    {
    	iteratorPoints itBegin = m_listOfPoint.begin();
    
    	std::advance(itBegin,2); 
    
    	m_listOfPoint.insert(itBegin , vertex2d);
    }
    volevo poi sapere se con il c++ 11 esistono percaso degli iteratori range oltre agli iteratori normali.
    Mi risultano in discussione per una futura revisione dello standard, ma non so se verranno inseriti nel C++14 (più un aggiustamento del C++11) o nel C++17.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ciao shodan
    grazie, cosi mi sembra semplicissimo, ho addocchiato anche distance sui link potrebbe essere anche lui utile.
    ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.