Hoe een dynamische reeks van gehele getallen te maken

Hoe een dynamische reeks van gehele getallen in C++ te maken met behulp van de newtrefwoord?


Antwoord 1, Autoriteit 100%

int main()
{
  int size;
  std::cin >> size;
  int *array = new int[size];
  delete [] array;
  return 0;
}

Vergeet niet op deleteelke 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_sof std::copyook 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

Other episodes