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

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

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

11 ответов

14 просмотров

Оберните код в теги: 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>).

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта