Как я создаю массив в C++, который находится на "куче" вместо стека?

Не уверен, почему вы получаете разные результаты для приведенных выше сопоставлений. По сути, оба отображения должны давать одинаковые результаты, поскольку они одинаковы для поля pan_no . Я проверил приведенные выше сопоставления в моей локальной среде, и я получаю те же результаты. По умолчанию для анализатора типа текста используется стандартный анализатор, и он выдаст результат для запроса (в соответствии с вашими примерами данных):

{  
   "query":{  
      "match":{  
         "pan_no":"ABCDEGFTY"
      }
   }
}

Теперь, когда я ввожу pan_no как ABCD, он должен вернуть мне вышеуказанный документ.

pan_no, так как ABCD не даст никаких данных для вашего образца, так как по умолчанию используется стандартный анализатор.

12
задан Nick Bolton 24 March 2009 в 01:06
поделиться

7 ответов

Вы захотите использовать новый как такой:

int *myArray = new int[SIZE];

Я также упомяну другую сторону этого на всякий случай....

Начиная с Вашего перехода от стека до "кучи" необходимо будет также очистить эту память, когда Вы будете сделаны с ним. На стеке память будет автоматически очистка, но на "куче", необходимо будет удалить его, и начиная с массив, необходимо использовать:

delete [] myArray;
45
ответ дан 2 December 2019 в 02:53
поделиться

Больше C++ способ сделать его должно использовать вектор. Затем Вы не должны волноваться об удалении памяти, когда Вы сделаны; вектор сделает это для Вас.

#include <vector>

std::vector<int> v(262144);
23
ответ дан 2 December 2019 в 02:53
поделиться

Как число не обязательно известно во время компиляции, тип является указателем:

int *myArray = new int[262144];
1
ответ дан 2 December 2019 в 02:53
поделиться

new выделяет на "куче".

#define SIZE 262144
int * myArray = new int[SIZE];
1
ответ дан 2 December 2019 в 02:53
поделиться

Я верю

#define SIZE 262144
int *myArray[SIZE] = new int[262144];

должен быть

#define SIZE 262144
int *myArray = new int[262144];

или еще лучше

#define SIZE 262144
int *myArray = new int[SIZE];
1
ответ дан 2 December 2019 в 02:53
поделиться

Причина первая попытка не работала, состоит в том, что синтаксис является неправильным. Попробуйте это:

int *myArray = new int[SIZE];
0
ответ дан 2 December 2019 в 02:53
поделиться

Ваш синтаксис для использования new было неправильным, это должно быть:

int *myArray = new int[262144];

только необходимо поместить размер справа от присвоения.

Однако при использовании C++, Вы могли бы хотеть посмотреть на использование std::vector (который Вы будете иметь), или что-то как boost::scoped_array сделать управление памятью немного легче.

0
ответ дан 2 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: