Como Converter Vetor em Array em C++
-
Utilize o
dados()
Método para converter um vetor em um array -
Utilize
&
Endereço do operador para converter um vetor em um vetor -
Use a função
copy()
para converter um vetor em uma array
Este artigo apresentará como converter um vetor em um array em C++.
Utilize o dados()
Método para converter um vetor em um array
Como o Padrão C++ garante que os elementos do vector
sejam armazenados contíguamente na memória, podemos chamar os dados
, um método vetorial embutido, e atribuir o endereço de retorno ao ponteiro recém declarado double
, como mostrado na seguinte amostra de código.
Note que qualquer modificação nos elementos utilizando o ponteiro d_arr
irá alterar os elementos de dados do vetor original porque estamos meramente apontando para os elementos arr
, mas não os copiando para um novo local.
#include <iostream>
#include <iterator>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<double> arr{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};
copy(arr.begin(), arr.end(), std::ostream_iterator<double>(cout, "; "));
cout << endl;
double *d_arr = arr.data();
for (size_t i = 0; i < arr.size(); ++i) {
cout << d_arr[i] << "; ";
}
cout << endl;
return EXIT_SUCCESS;
}
Resultado:
-3.5; -21.1; -1.99; 0.129; 2.5; 3.111;
-3.5; -21.1; -1.99; 0.129; 2.5; 3.111;
Utilize &
Endereço do operador para converter um vetor em um vetor
Alternativamente, podemos utilizar o operador de amperagem, que toma o endereço do objeto na memória e o atribui a um ponteiro recentemente declarado a um double
.
Neste exemplo, estamos tomando o endereço do primeiro elemento em vector
, mas você pode extrair um ponteiro para qualquer outro elemento e fazer operações conforme necessário.
Os elementos podem ser acessados com a notação d_arr[index]
array, e de forma similar ao método anterior, quaisquer modificações no d_arr
estão afetando os dados do arr
.
#include <iostream>
#include <iterator>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<double> arr{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};
copy(arr.begin(), arr.end(), std::ostream_iterator<double>(cout, "; "));
cout << endl;
double *d_arr = &arr[0];
for (size_t i = 0; i < arr.size(); ++i) {
cout << d_arr[i] << "; ";
}
cout << endl;
return EXIT_SUCCESS;
}
Use a função copy()
para converter um vetor em uma array
O método copy()
pode ser utilizado para converter um vetor em um array double
para que os elementos de dados sejam copiados para um local de memória diferente. Mais tarde, podemos modificá-los sem nos preocuparmos em alterar os dados vetcor
originais.
Note que estamos declarando um d_arr
com 6 elementos fixos, que é alocado como memória empilhada. Na maioria dos cenários, o tamanho de uma array não será conhecido de antemão, portanto, seria necessário utilizar alocação dinâmica de memória com métodos como new
ou malloc
.
#include <iostream>
#include <iterator>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<double> arr{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};
copy(arr.begin(), arr.end(), std::ostream_iterator<double>(cout, "; "));
cout << endl;
double d_arr[6];
copy(arr.begin(), arr.end(), d_arr);
for (size_t i = 0; i < arr.size(); ++i) {
cout << d_arr[i] << "; ";
}
cout << endl;
return EXIT_SUCCESS;
}
Resultado:
new_vec - | 97 | 98 | 99 | 100 | 101 |
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook