Hoe een dynamische reeks van gehele getallen in C++ te maken met behulp van de new
trefwoord?
Antwoord 1, Autoriteit 100%
int main()
{
int size;
std::cin >> size;
int *array = new int[size];
delete [] array;
return 0;
}
Vergeet niet op delete
elke array die u deelt met new
.
Antwoord 2, Autoriteit 48%
Sinds C++ 11 is er een veilig alternatief voor new[]
en delete[]
DIE ZERO-overhead In tegenstelling tot std::vector
:
std::unique_ptr<int[]> array(new int[size]);
In C++ 14:
auto array = std::make_unique<int[]>(size);
Beide bovenstaande vertrouwen op hetzelfde koptekstbestand, #include <memory>
Antwoord 3, Autoriteit 23%
Mogelijk wilt u overwegen gebruik te maken van de standaard sjabloonbibliotheek. Het is eenvoudig en gemakkelijk te gebruiken, plus u hoeft zich geen zorgen te maken over geheugen toewijzingen.
http://www.cplusplus.com/reference/stl/vector/vector /
int size = 5; // declare the size of the vector
vector<int> myvector(size, 0); // create a vector to hold "size" int's
// all initialized to zero
myvector[0] = 1234; // assign values like a c++ array
Antwoord 4, Autoriteit 5%
int* array = new int[size];
Antwoord 5, Autoriteit 2%
Zodra de vraag gaat over Dynamic Array, wilt u misschien niet alleen om array met variabele grootte te maken, maar ook om het formaat te veranderen tijdens runtime. Hier is een voorbeeld met memcpy
, u kunt memcpy_s
of std::copy
ook gebruiken. Afhankelijk van de compiler, <memory.h>
of <string.h>
kan vereist zijn. Wanneer u deze functies gebruikt, wijst u nieuwe geheugenregio toe, kopieerwaarden van originele geheugenregio’s erop en laat ze dan los.
// create desired array dynamically
size_t length;
length = 100; //for example
int *array = new int[length];
// now let's change is's size - e.g. add 50 new elements
size_t added = 50;
int *added_array = new int[added];
/*
somehow set values to given arrays
*/
// add elements to array
int* temp = new int[length + added];
memcpy(temp, array, length * sizeof(int));
memcpy(temp + length, added_array, added * sizeof(int));
delete[] array;
array = temp;
U kunt constant 4 gebruiken in plaats van sizeof(int)
.
Antwoord 6
Wijs dynamisch een geheugen toe met new
:
int* array = new int[size];
Antwoord 7
#include <stdio.h>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
float arr[2095879];
long k,i;
char ch[100];
k=0;
do{
cin>>ch;
arr[k]=atof(ch);
k++;
}while(ch[0]=='0');
cout<<"Array output"<<endl;
for(i=0;i<k;i++){
cout<<arr[i]<<endl;
}
return 0;
}
De bovenstaande code werkt, de maximale vlotter of int-array-formaat die kan worden gedefinieerd, was met MADE 2095879 en de uitgangsconditie zou niet nul beginnend ingangsnummer zijn