Por que tanto arrays em tempo de execução quanto std :: dynarray em C ++ 14?
Rascunho C ++ 14 inclui arrays de tamanho de runtime estd::dynarray
recipiente. Pelo que posso dizer, a única diferença real entre os dois é questd::dynarray
tem uma interface STL (por exemplo,begin
, end
, size
, etc.), enquanto matrizes dimensionadas em tempo de execução não. Então, por que o C ++ 14 precisa dos dois?
Eu entendo que os arrays de tamanho de runtime são parte da linguagem principal, enquantostd::dynarray
faz parte da biblioteca padrão, masa proposta destd::dynarray
deixa claro que os autores esperam que os compiladores, em muitos casos, ofereçamstd::dynarray
para que possa ser o mais eficiente possível, ou seja, tão eficiente quanto um array de tamanho de tempo de execução. Como tal, a distinção linguagem / biblioteca parece um pouco artificial.
Então, novamente, por que o C ++ 14 precisa de arrays de tamanho de runtime estd::dynarray
? E dado questd::dynarray
tem uma interface mais rica (STLified), por que não apenas descartar matrizes em tempo de execução, supondo questd::dynarray
pode ser implementado com eficiência de tempo de execução igual?
Esclarecimento
Quando falo em "matrizes dimensionadas em tempo de execução", estou me referindo a um novo recurso de linguagem principal C ++ 14 descrito emN3639, não para matrizes C tradicionais ou VLAs ou qualquer coisa em C ++ 11.