Qual è il modo migliore per inserire un intervallo di valori in una struttura dati

1

Se ho una struttura dati che è il modo più veloce in cui posso inserire valori in un intervallo specificato?

Ad esempio se avessi un metodo:

myDatastructure var=new myDataStructure();
var.insert(2,1000);

significherebbe che ottengo il modo più ottimale di ottenere una struttura dati contenente valori da 2 a 1000 in ciascun indice in sequenza.

    
posta user841923 10.11.2011 - 12:11
fonte

2 risposte

1

Se si dispone di un STL C ++ 11, è possibile utilizzare la funzione std::iota() per inserire valori che aumentano in sequenza in qualsiasi contenitore che supporti gli iteratori. Per quanto riguarda la scelta di un tipo di contenitore, le matrici C o std:array s dovrebbero essere le più veloci in quanto non richiedono allocazioni di memoria aggiuntive durante l'inserimento di elementi.

    
risposta data 02.12.2011 - 14:57
fonte
1

Il modo più veloce per farlo è non farlo. Ecco uno schema di una classe che assomiglia a un array di sola lettura di numeri interi consecutivi.

class range {
private:
  int low, high;
public:
  typedef int iterator;
  range(int low, int high) { this.low = low; this.high = high; }
  iterator begin() { return low; }
  iterator end() { return high + 1; }
  int operator[](int index) { return low + index; }
}
...
range r(1, 1000);
for (r::iterator i = r.begin(); i != r.end(); ++i) { ... }

Se hai bisogno di una raccolta scrivibile, la risposta dipende da come desideri modificarla dopo la creazione.

    
risposta data 02.12.2011 - 15:28
fonte

Leggi altre domande sui tag