21

Re: Векторні масиви у функціях

std::vector - взагалі не масив. Немає такого поняття "векторний масив". Так, він поводить себе в певних ситуаціях схоже на масив, але це не масив.
І я очікував тут відповіді "бо перший аргумент функції insert_sort типу double [], а викликається ця функція з параметром a, який є типу vector<double>"; але, може, так навіть і на краще. Отже, double[] - це не vector<double>; добре, що це було сказано вами, а компілятор ще й додав, що одне на інше так просто перетворити не виходить. А що треба зробити з функцією insert_sort, щоб вона приймала не double[], а vector<double>?

22 Востаннє редагувалося Joker (12.08.2014 23:16:41)

Re: Векторні масиви у функціях

Варіанти:
1) зробити шаблон
2) спробувати працювати з цим vector за допомогою силок.

Хоть щось правильно?

23 Востаннє редагувалося koala (12.08.2014 23:57:54)

Re: Векторні масиви у функціях

Спробуємо абстрагуватися... Ось вам це ж питання в більш загальному вигляді:
У нас є функція, що приймає аргумент типу A. Що зробити, щоб була функція, що приймає тип B?

Підказка

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

24

Re: Векторні масиви у функціях

Ваша підказка ще більше заплутала  :)
Роздуми :

  • Ну, щоб функція приймала різні типи або різну кількість аргументів потрібно зробити перевантажену функцію.
    Де буде окремий варіант для окремих типів, але у нас vector <double> а не double, тому я знов мелю якусь нісенітницю.

  • Може вказати, тип B перед іменем функції, тоді вона зможе повернути той самий тип. Але повернути - не то, більше того у такому випадку проходило б і void, тому роздум хибний.

  • Щоб функція могла працювати з даними типу B, потрібно вказати тип B  при створенні функції.

тип_функції name (тип_B змінна|масив)

25

Re: Векторні масиви у функціях

Пане, я вперто не можу зрозуміти ваших проблем. Вам потрібна функція, що приймає певний тип? ТО ПРОГОЛОСІТЬ ФУНКЦІЮ, ЩО ПРИЙМАЄ ЦЕЙ ТИП. В чому проблема? Вам треба з vector працювати? То хай його функція і приймає (за посилання потім поговоримо).