В C ++ 11 возможно:
auto array = new double[M][N];
Таким образом, память не инициализируется. Для инициализации это сделайте это вместо:
auto array = new double[M][N]();
Пример программы (скомпилируйте с помощью «g ++ -std = c ++ 11»):
#include <iostream>
#include <utility>
#include <type_traits>
#include <typeinfo>
#include <cxxabi.h>
using namespace std;
int main()
{
const auto M = 2;
const auto N = 2;
// allocate (no initializatoin)
auto array = new double[M][N];
// pollute the memory
array[0][0] = 2;
array[1][0] = 3;
array[0][1] = 4;
array[1][1] = 5;
// re-allocate, probably will fetch the same memory block (not portable)
delete[] array;
array = new double[M][N];
// show that memory is not initialized
for(int r = 0; r < M; r++)
{
for(int c = 0; c < N; c++)
cout << array[r][c] << " ";
cout << endl;
}
cout << endl;
delete[] array;
// the proper way to zero-initialize the array
array = new double[M][N]();
// show the memory is initialized
for(int r = 0; r < M; r++)
{
for(int c = 0; c < N; c++)
cout << array[r][c] << " ";
cout << endl;
}
int info;
cout << abi::__cxa_demangle(typeid(array).name(),0,0,&info) << endl;
return 0;
}
Выход:
2 4
3 5
0 0
0 0
double (*) [2]
Использование Skype PostgreSQL вместе с Python, и они улучшились МН / Python к, он - текущее состояние, таким образом, я сомневался бы, что поддержка Python далека позади жемчуга. Они записали организацию очередей/систему репликации сверх той привязки, после всего:-)
Смотрите: Wiki Skytools
От беглого взгляда в документации, Python, кажется, имеет меньше документации, чем привязка жемчуга, но я предложил бы просто придерживаться языка, которым Вы являетесь самыми довольными.
Когда я записал свой первый триггер, это было в Perl, потому что это было языком, используемым в примере, который я нашел, но последние триггеры, которые я записал, где в Python, потому что я более доволен этим.
я думаю, что комфорт программиста является моей главной причиной выбрать Python, но я думаю, что Perl еще лучше поддерживается.
Для чего-либо действительно маленького/простого или это не требует большой обработки строк или логики, я использую plpgsql, потому что это быстро. Для более сложных вещей я использую plperl, потому что мне нравится он.
Я только действительно использовал PL/pgSQL, но это было то, потому что я нуждался в нескольких хранимых процедурах относительно быстро и не хотел добавлять дополнительные модули к серверу.
Долгосрочная перспектива, я, вероятно, использовал бы МН / Perl или МН / Python, поскольку я использую жемчуг для быстрых сценариев и смотрел на Python некоторое время теперь.
Одна вещь, которую я нашел, состоит в том, что существует отсутствие хорошей документации для этого на сайте PostgreSQL. Руководства были полны как ссылка, но не работали хорошо учебным руководством, чтобы помочь показать людям, как это должно быть сделано.
, Что, объединенный с очень хорошей средой отладки, означал, что мой первый опыт записи процедур включал рассмотрение странных синтаксических ошибок в течение долгого времени.
, Если кто-то знает о хорошем сайте с учебными руководствами и т.д. для программирования PostgreSQL, я хотел бы получить ссылку на него.
Я пишу в значительной степени все в plpgsql, но я - также парень базы данных прежде всего, таким образом, он обычно подходит мне лучше, чем какой-либо другой язык. Но существует много вещей, которые это не делает очень хорошо, в этом случае другой язык, такой как plperl или plpython является хорошей ставкой. Конечно, если скорость является серьезным беспокойством, C является способом пойти.
Пуазейль/Ruby, потому что я использую Ruby каждый день так или иначе.
Я использую PL/pgSQL для большинства все, и если существует что-то, что он не может сделать, я пишу функции в МН / Python (который качается). Можно также использовать МН / Java, МН / Perl, PL/PHP.
я сказал бы, что Python является, вероятно, лучшим все вокруг того, потому что Python идет примерно каждая система Linux. Perl был бы вторым с Python, бьющим его из-за более легкого синтаксиса чтения.
Я использую PL / Perl, потому что: