c++ : konvertieren Sie vector-Tupel

Wie kann ich umwandeln std::vector std::tuple ?
Ich habe

class T { };
int cnt = 3;
vector<T*> tv;
for (int i = 0; i < cnt; ++i) {
  tv.push_back(new T());
}

Ich will

auto tp = std::tie(*tv[0], *tv[1], *tv[2]);

Wie kann ich diese tp ?
Wenn cnt ist groß genug, ich kann nicht schreiben, diese tp manuell.

  std::vector<
  ConvConnection<
  decltype(inputLayer),
  decltype(*C1[0]),
  decltype(*Conn1Opt[0]),
  RandomInitialization<arma::mat>,
  arma::mat
  >* > Conn1(6);

  for (size_t i = 0; i < 6; ++i) {
    Conn1.push_back(new  ConvConnection<
                    decltype(inputLayer),
                    decltype(*C1[0]),
                    decltype(*Conn1Opt[0]),
                    RandomInitialization<arma::mat>,
                    arma::mat
                    >(inputLayer, *C1[i], *Conn1Opt[i], 5, 5));
  }

Dies ist der code. Hier ist nur 6, aber ich brauche auch ein Vektor, dessen Größe über 100. Ich brauche zum konvertieren dieser Vektor auf ein Tupel.

  • Wenn es zu groß oder zu mühsam zu schreiben, manuell, schreiben Sie ein weiteres Programm, das es erzeugt. Wenn Sie möchten, um zu bestimmen, die Tupel Größe zur Laufzeit können Sie nicht.
  • Warum brauchen Sie ein Tupel? Würde nicht std::array<T*,MAX> Arbeit?
  • Einen off-topic-Fehler: Man sollte wirklich besser eine variable/Klasse Namen. Es gibt keinen Grund cnt kann nicht geschrieben werden als count. Was ist ein ConvConnection? Conn1Opt? Im Jahr 2015, Ihre source-Dateien werden immer noch auf Ihrer Festplatte mit ein paar zusätzliche Zeichen in Ihnen, und andere Entwickler, die sich Ihr code wird es dir danken später 🙂
Schreibe einen Kommentar