Я пытался понять это объявление массива в течение получаса, но значение int * [n] меня очень сильно сбивает с толку. Есть ли более удобный способ написать эту декларацию? Как я могу получить такой тип декларации в cpp?Объявление двойного указателя 2-d int ** seq = new int * [n];
ответ
Есть ли более удобный способ написать эту декларацию?
идиоматических способ заявить, что массив указателей в C++ будет
int n,q;
cin>>n>>q;
std::vector<int*> seq(n);
Хотя сомнительно, почему int*
указатели должны храниться в массиве.
A int * - указатель (я полагаю, вы знаете это).
So int * [n] - массив длины n содержащий указатели на целые числа.
Что больше всего смущает людей, так это то, что переменные, содержащие массивы, на самом деле являются указателями на C++. Из-за этого тип переменной, мы храним int * [n], должен быть int **.
Указатель указывает на первый элемент массива и, например, seq [2] будет скомпилирован в * (seq + 2). Массив не является объектом, а конструктом в памяти, о котором компьютер не знает во время выполнения.
[Blah, blah, bla bla] (https://www.youtube.com/watch?v=anwy2MPT5RE) –
_ "Массив не объект, а конструктор в памяти, о котором компьютер не знает во время выполнения." _ Huh ?? –
@ Я понимаю, что подход std-lib более приятный, но он попросил объяснение – Syntac
- 1. Объявление двумерного массива с использованием двойного указателя
- 2. Объявление смежного указателя 2D-массива
- 3. Путаница с 'int * s = new int [i]; 'и' int * f = new int; '
- 4. Reverse карты типа [Int, Seq [Int]]
- 5. преобразования из 2d массива двойного указателя
- 6. В чем разница между «int * a = new int» и «int * a = new int [5]»?
- 7. В чем разница между «int * a = new int» и «int * a = new int()»?
- 8. Передача указателя unsigned int указателю long int
- 9. Лучшее объявление int
- 10. Значение int (0) в int * pi = new int (0) ;?
- 11. Сколько памяти занимает int [n] []?
- 12. Объявление максимального значения int
- 13. Как объявляется объявление типа массива 'new int [10] []'?
- 14. Динамический адрес указателя int?
- 15. return new int [] {randomHeight, randomWidth};
- 16. Java 2D Int Arraylist
- 17. 2D int array shuffle
- 18. Адрес указателя на int
- 19. Синтаксис строгих функций: auto (* f3) (int n) -> int (*) [n];
- 20. Как легко преобразовать IndexedSeq [Array [Int]] в Seq [Seq [Int]] в Scala?
- 21. Каково значение Seq [Int] в качестве ключа в Map [Seq [Int], FactorNode]?
- 22. Что такое "new int [];" делать?
- 23. Аргументы против статического указателя int
- 24. int * array = new int [n]; что на самом деле делает эта функция?
- 25. Динамические массивы на Java? Использование ArrayList vs int [] array = new int [n]
- 26. Объявление массива int в xtend
- 27. Преобразование [(Int, Seq [Double])] РДД к LabeledPoint
- 28. Динамическое распределение 2D-массива int
- 29. Вызов двойного указателя
- 30. Кастинг (int?) Null vs. new int?() - Что лучше?
Не используйте необработанные указатели, пожалуйста! Кроме того, полтора часа исследования не позволяет вам задавать вопрос в Stack Overflow. –
Это массив 'int *'. – songyuanyao
Что не так с использованием исходных указателей? –