#c #arrays #function #constructor
#c #массивы #функция #конструктор
Вопрос:
Я новичок в C , поэтому, пожалуйста, потерпите меня.
По сути, я создаю заголовок для одного из своих классов и столкнулся с трудностями.
Экземпляр рассматриваемого класса создается функцией Main(), теперь, когда этот экземпляр класса создан, я хочу передать длину массива. Однако я не могу этого сделать, если он объявлен статически в заголовке, верно?
Какие-либо решения? Извините, это, вероятно, очень просто, но я исхожу из опыта Java, я пытаюсь не делать вещи по-Java.
Спасибо.
Ответ №1:
Если вы программируете на C и хотите объявить массив переменного размера, то, скорее всего, вы не хотите использовать «встроенный» «массив» в стиле C. Это своего рода инструмент «гайки и болты».
Вы, вероятно, хотите использовать std::vector
вместо этого. Это класс, который является более гибким и не требует указания размера в момент объявления. Вы можете поискать учебные пособия по его использованию в Интернете, но вот случайный из Google:
http://www.yolinux.com/TUTORIALS/LinuxTutorialC STL.html#VECTOR
Интересным аспектом C является то, что, хотя векторы являются «библиотечным кодом» и классом, который вы потенциально могли бы написать самостоятельно, не изменяя компилятор, они обеспечивают доступ с помощью обозначений, таких как скобки. Некоторые плюсы из faq и некоторые минусы из fqa, представленные здесь, с недоверием относятся к обеим сторонам:
http://yosefk.com/c fqa/operator.html
Хотя использование абстракции массива в стиле C имеет некоторые преимущества в производительности, std::vector
он почти наверняка быстрее, чем массивы Java, и в большинстве случаев является лучшим выбором.
Комментарии:
1. Спасибо, сейчас я изучаю векторы.
Ответ №2:
Если я вас правильно понял, вы хотите получить размер статически типизированного массива и передать его классу?
Если это правильно, взгляните на http://ideone.com/JLoZY — это первое, что пришло мне в голову.
В основном компилятор заполнит необходимые параметры шаблона, поэтому вам не нужно беспокоиться о них. Это может быть легко использовано для использования в других сценариях
Комментарии:
1. По сути, когда программа выполняется, перед созданием экземпляра класса я хочу получить длину массива через cin.