C питання?

M

mImoto

Guest
Здравствуйте,

Я розробив Visual C 6.0 програми.Я хотів би задати Вам кілька запитань.Я навчання Visual C , і я зовсім новачок.

У моїй програмі я прочитав рядки з файлу.Я використовую статичного розподілу пам'яті.
Cline це клас, створений мною.

Cline ArrayData [1000] / / Тут 1000 є nunber строк файлу
/ / Я не знаю nunber, але я сподіваюся, буде менше, ніж 1000.
характеристик даних [1000] [16];
/ / Тут 1000 з тієї ж причини, але на 16 фіксованихЯ знаю, що, можливо, це не optimun рішення (я залишаю за собою, мабуть, більше пам'яті, ніж я використовую), і представляється більш ніж C C .
Мені було цікаво використовувати замість динамічного управління пам'яттю, але я не знаю, як це зробити.Крім того, я думав у використанні "Вектор" клас, але я думаю, це тільки для одновимірних arraysż?.

Питання полягає в żHow ви експертам зробити це ".Краще користуватися динамічної пам'яті?.І чи можна оголосити вектор мого класу CLinea або типів векторних тільки INT,
і т.д.?.

Спасибо и извините за поразки Вас так багато питань,

З повагою,

mimoto

 
Привіт miMoto,

Є багато способів зробити це, але я вважаю, що кращі з них за допомогою стандартної бібліотеки (входить в C розподіл)

Перш за все, Ви включили vctor бібліотека

# Включити <vector> / / без. Ч

<img src="http://www.edaboard.com/images/smiles/icon_eek.gif" alt="Шокований" border="0" />/ / Оголосити ваш типів
STD:: вектор <Cline> ArrayData;

ввести свої дані на кінець вашої вектора використовується функція push_back, шт.
ArrayData.push_back (...);

для доступу до ваших даними використовувати [] Оператор, як і з загальними масивами.

використовувати multidimension масиви оголосити типи.

STD:: вектор <char> ch_vector;
STD:: вектор <ch_vector> даних;

якщо є будь-які сумніви, дивитися на http://www.sgi.com/tech/stl/ або відправити мені повідомлення.

з повагою,

mgs_p

 
C
1.Визначити покажчик символ * буфера;
2.Використовуйте malloc функція виділення
пам'яті під час виконання.C
1.визначте ваші callss
2.Використання нових функцій для створення класу

перевірити цей сайт ви знайдете відповідь на ваш qestion в деталях ..
http://www.cplusplus.com/doc/tutorial/tut3-4.html
(Динамічної пам'яті)

Головна сторінка Учебник
http://www.cplusplus.com/doc/tutorial/

 
Привет

Я від експерта з C , але динамічної
пам'яті розподіл здійснюється за допомогою "нового" оператор
і випустила thorugh "Видалити".
на правій стороні нових буде клас.
З іншого боку, Ви можете використовувати контейнера бібліотеки STL, як повідомив mgs_p або ви можете написати власну бібліотеку.Але ntoe, що динамічне виділення
пам'яті в C
більше часу, ніж malloc в C.

 
Здравствуйте MImoto,

Ви повинні розглянути, якщо ваші думки більше базових ради або визначити потрапити на належне рішення у вигляді C програми.

Ви віддаєте перевагу останній путь моя порада полягає в тому, щоб використовувати Microsoft Foundation Classes передбачено також постачальником VC та пакет повинен бути встановлений на жорсткий диск еще.
Я маю на admitt розуміння не відбувається протягом декількох годин, але витратити деякий час, щоб дізнатися більше про це, і ви дізнаєтеся, ваша проблема вирішена ще.
Вам не потрібно розробляти новий клас за своїм розсудом.
На самому початку тільки CArray то всередині вашого редактора області кожен клік по ньому, щоб курсор лежить там, а потім натисніть кнопку ключа <F1>.
Довідкова система буде називатися.
Виберіть CArray всередині listfield спливає, і ви побачите готовий клас,
який охоплює всі ваші побажання у плані керувати вашими даними.Використовуйте клас членів належить і з'ясувати, що вони роблять, і які є правильними для керування даними.

удачі!

Роббі

 
Дякуємо за відповіді,

Я буду вчитися більше про MFCs.Вони, здається, що я шукав.И последний вопрос.

Якщо я використовую вектор контейнері замість:
Cline ArrayData [1000] / / Тут 1000 є nunber строк файлу

вектор <Cline> V (100);

Що станеться, якщо мені потрібно після більш ніж 100 елементів.потрібно видалити купа пам'яті, що виділяється для V (100), і виділяти більше
пам'яті копіювання попереднього масиву в ній, чи це буде зроблено автоматично.

З повагою,

Javi

 
МФЦ є гарною, якщо ви хочете обмежити свої знання у вікнах програми.
Але будьте обережні з МФЦ!Вони, як видається, можна було легко користуватися, але важко опанувати!

Якщо ви хочете написати більш загальні програми, які ви могли б використовувати STL (стандартна бібліотека шаблонів), як mentionned вище.Це може бути littlebit важче, щоб почати з ними (особливо ітераціях частини можна було б дивним на перший план), але вони дуже потужні, як тільки ви знаєте, як їх використовувати!

Або, якщо ви дійсно хочете повну гнучкість, ви можете спробувати написати власний контейнерний клас і перевантаження операторів ви хочете ([], , =, ==, ...)
(Ви повинні читати гарну C книги, перш ніж приступити до цього

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Подмігнуть" border="0" />

)Цю пропозицію я даю про Visual C :
Спробуйте навчання C першим!
Visual C є небезпечним і виділить з PPL втратити себе в письмовому вигляді графічного введення та алгоритми, дані, ...в GUI's (BAD !!!).Вони ніколи не схоже, щоб думати про класів, спадкування, перевантаження, ....
Спробуйте, починаючи з функціональністю (у терміналі заявка, наприклад) і DON't почати з введенням кнопок у діалоговому вікні, і подзвонити до classwizard додати метод кнопку.

Antharax

 
Що стосується вашого питання:
Ви використовуєте STL, а не МФЦ з використанням вектора (що добре!!)
(Там, як видається, не є CVector клас

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Дуже веселий" border="0" />

)
І вам не доведеться піклуватися про розмір!Коли ви додаєте то вектор буде автоматично збільшити розмір при необхідності.
(ви можете почати його наступним чином: вектор <Cline> V)

Просто додайте, що ви хочете, читати, видаляти елементи, ...

Antharax

 
Javi Привіт!

Я думаю, ви не можете зробити так: вектор <Cline> V (100);І ви повинні написати замість: вектор <Cline> V;
you can see the maximum possible length of the vector which you can allocate.

Так що якщо ви зателефонуєте суд <<v.max_size (),
ви можете побачити максимально можливу довжину вектора, який можна виділити.or v.insert(clineVar, 3);
indeed the vector class allocates memory for you class so don't worry about it.

і коли ви телефонуєте v.push_back (clineVar)
або v.insert (clineVar, 3);
дійсно вектор класу виділяє
пам'ять для класу так ви не турбуйтеся про це.

Якщо ви хочете знати, що кількість елементів у вектор використовувати наступним чином: суд <<v.size ();Крім того, якщо ви хочете знати, що кількість елементів в
пам'яті вектор: суд <<v.capacity ();

Ця функція повернути реальне число зберігання, яка містить вільні
пам'яті вектором cource якщо додати деякі елементи більш ніж на це число,
то вектор клас автоматично буде виділяти більше
пам'яті для вашого вектор.(it's more efficient) if you have enough memory.

але краще, якщо ви використовуєте v.resize (100);
(це більш ефективним), якщо у Вас достатньо пам'яті.
З повагою<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Подмігнуть" border="0" />
 
Здравствуйте Antharax,

Ви абсолютно праві, знання про МФЦ не зробили 'до речі', але після 2 років, ви отримаєте гарне почуття, що відбувається всередині цієї системи софістікой.Ситуація запущена осложнить
зв'язку з тим, не всі API функції wraped всередині МФЦ, і тому знання повного Win Застосування інтерфейсу є підписаний.Для цього забувати привести в глухий кут вул.
Іноді оголосив заяви, використовуючи МФЦ на стенді allone більш предметом думати двічі о.По крайней мере, на мій погляд.

Те, що робить МФЦ є забезпечення skelet з такими функціями, як Doc / View-дизайн, divertion між даними і тим, і повинна потужна програма для дизайну.Щоб придумати це сам займе багато часу, краще використовувати для основних речей.

вітання

Роббі

 

Welcome to EDABoard.com

Sponsor

Back
Top