170 похожих чатов

Template <typename K, typename V> vector<double> ComputeTfIdfs(K<V> documents, V word) { } где

ошибка? чего не так с "K"?

11 ответов

12 просмотров

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

Aei84-🤙🌊 Автор вопроса

template < template < typename > typename K, typename V > vector<double> ComputeTfldfs(K<V> documents, V word) /* ... */ Edit: Шаблон != элиас типа.

Aei84-🤙🌊 Автор вопроса
Sergey Anisimov
template < template < typename > typename K, ...

а к такой как? vector<double> ComputeTfIdfs(V2<V1<S>> documents, S word);

Aei84 🤙🌊
а к такой как? vector<double> ComputeTfIdfs(V2<V1<...

Так же, поскольку V1<S> - тип, а V2 - шаблон. Если V1 - тоже параметр шаблона (описываемого), то опишите оба: template < template < typename > typename V1, template < typename > typename V2, typename S > /* ... */

Aei84-🤙🌊 Автор вопроса
Sergey Anisimov
Так же, поскольку V1<S> - тип, а V2 - шаблон. Если...

спасибо!!! но логику уловить не могу(( надо что-то почитать

Aei84 🤙🌊
спасибо!!! но логику уловить не могу(( надо что-то...

Полная специализация шаблона типа (template </* ... */> class|struct с полным списком предоставленных аргументов) идентифицирует конкретный тип. В противном случае это все еще шаблон, требующий предоставления таковых. Шаблоны типов (без предоставленных аргументов) != типы; специализации шаблонов типов (с предоставленными) == типы. В списке шаблонных параметров typename "элиасит" (наподобие того, как это делает typedef/using) по-умолчанию тип; для элиасинга шаблона (наподобие template </* ... */> using) используется соответствующая грамматическая форма параметра (template </* ... */> typename). В частности, в рамках Вашего примера, и V1, и V2 представляются шаблонами типов с одним шаблонным параметром-типом, в то время как S - обычный параметр-тип. Так Вы их в списке параметров корневого шаблона и описываете (мой последний пример). Edit: Например V1<S> - это typename (поэтому, чтобы его принять, требуется шаблон template < typename > typename V2), в то время как сам V1 (без аргументов) - template < typename > typename.

Aei84-🤙🌊 Автор вопроса
Sergey Anisimov
Полная специализация шаблона типа (template </* .....

сам себя запутал(( из этого vector<double> ComputeTfIdfs(const vector<vector<string>>& documents, const string& word) надо было это сделать template < typename K, typename S> vector<double> ComputeTfIdfs(const K& documents, const S word)

Aei84 🤙🌊
сам себя запутал(( из этого vector<double> Comput...

Всё ещё неправильно :( Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

Aei84 🤙🌊
сам себя запутал(( из этого vector<double> Comput...

Вы можете сделать и так, просто таким образом не налагаете никаких ограничений на первый параметр функции. vector<vector<string>> - действительно обычный тип, который заэлиасится typename'ом. Однако туда же ляжет и int, например. Если Вы хотите ограничить исключительно подобную вложенность специализаций для первого параметра - мой пример все еще в силе (и первый параметр с его учетом будет объявляем как const V1<V2<S>>& (или наоборот), если разность типов шаблонов-контейнеров допускается). Ваш же последний пример (с vector<vector<string>>) ляжет и в нижеследующее: template < template < typename > typename Vector, typename String > vector<double> ComputeTfIdfs(const Vector<Vector<String>>&, const String&) /* ... */ Как Вы понимаете, параметры шаблона можно использовать и в описании типа возвращаемого значения, если требуется (в частности, сделать его Vector<double>).

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта