Форум программистов, компьютерный форум CyberForum.ru

Тип контейнера как параметр шаблонной функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Кодирующие контейнеры? http://www.cyberforum.ru/cpp-beginners/thread919126.html
Существуют ли контейнеры, которые позволяют хранить N элементов за memory<O(N)? Именно на ходу. Скорость не так важна.
C++ Хвостовая рекурсия int fac_times (int n, int acc) { if (n == 0) return acc; else return fac_times(n - 1, acc * n); } int factorial (int n) { return fac_times (n, 1); }. Можно ли в хвостатом факториале избавиться от вспомогательной функции? Как? http://www.cyberforum.ru/cpp-beginners/thread919106.html
C++ Контур пятиконечной звезды в программе Dev C++ 5.4.2
Здравствуйте, помогите пожалуйста сделать задание: нарисовать контур пятиконечной звезды средствами языка с++ Только нужно работать именно с новыми компиляторами (как Dev C++ 5.4.2) Заранее спасибо!
C++ TRY/CATCH
Здравствуйте! У меня есть: MASS; для простоты пояснения, x=rand();y=rand(),znacheniye=rand(); Как игнорировать ошибки доступа? TRY{MASS=znacheniye;} catch(...){}
C++ функция удаления и добавления элементов. что не так с програмой? http://www.cyberforum.ru/cpp-beginners/thread919084.html
#include <iostream> using namespace std; struct node{ double a; double b; node *next;}; node *head= NULL; node *p, *tail; void add(int n){ int i;
C++ Ошибки в коде, Borland C++ 3.1 Добрый день! Подскажите пожалуйста, в коде 2 ошибки, не понимаю как их исправить. #include <iostream.h> #include <iomanip.h> #include <stdlib.h> #include <time.h> const int size = 20; const int hor = 10, ver = size; void bucketSort(int); подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.07.2013, 20:19     Тип контейнера как параметр шаблонной функции
А нужно ли иметь в контейнере элементы именно типа T? Может быть достаточно, чтобы тип T успешно преобразовывался при добавлении в контейнер, тогда всё элементарно:
C++
1
2
3
4
5
6
7
8
9
10
template<class T, class C>
void fill_v( C& c, const std::string& from)
{
    std::ifstream ifs(from);
    if (!ifs) throw std::runtime_error("can't open input file");
 
    T itm;
    while (ifs>>itm) 
        c.push_back(itm);
}
Использование:
C++
1
2
3
4
5
    std::vector<int> v;
    std::list<double> l;
 
    fill_v<int, std::vector<int> >( v, "f1"); // Типы совпадают
    fill_v<int, std::list<double> >( l, "f2"); // int преобразуется в double
И ещё я убрал возврат ifstream, потому что копировать его всё же нельзя (неужели никто не заметил?)
 
Текущее время: 23:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru