Как узнать тип элементов вектора?

223
09 апреля 2018, 01:08

К примеру есть вектор:

vector<int> alfa;

как узнать тип его элементов до появления первого элемента. Типа:

decltype(alfa[0]);
Answer 1

Посмотреть на <int> в скобках :)

Вообще-то decltype не вычисляет само выражение, так что до появления элемента использовать alfa[0] можно, но... Это будет ссылка.

Я бы делал так:

decay_t<decltype(alfa[0])> b;

Но не проще ли для вектора (и прочих стандартных контейнеров) использовать его value_type?

Answer 2

Для примера определим версию функции вывода содержания STL контейнера:

template <class V>
void show(V v)
{
    std::copy(v.begin(), v.end(), 
              std::ostream_iterator<typename V::value_type>(std::cout, " "));
    std::cout << std::endl;
}

std::ostream_iterator в аргументе шаблона должен иметь тип элементов контейнера. При использовании не важно какого типа контейнер и какого типа его элементы...

int main()
{   
    std::vector<int> v1{1, 2};
    std::vector<std::string> v2 {"first", "second"};
    show(v1);
    show(v2);
    return 0;
}
READ ALSO
Извлечение zip архива

Извлечение zip архива

В с++ не силен от слова совсем, но понадобился именно этот языкНужно извлечь zip архив и положить рядом с самим архивом

208
Сравнение вещественных чисел

Сравнение вещественных чисел

Помогите пожалуйста не понимаю в чем ошибкаНужно сделать функцию, которая вставляет в массив действительных чисел, отсортированный в порядке...

180
Timeout срабатывает после остановки QTimer

Timeout срабатывает после остановки QTimer

В основном классе MainWidnow определён Qtimer* timerВнутри одного из методов класса timeout связывается с публичным слотом:

176