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

Отобразить вектор в обратном порядке не используя реверсивные итераторы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ минимум среди сумм элементов диагоналей, параллельных главной http://www.cyberforum.ru/cpp-beginners/thread634350.html
Оформить каждую задачу в виде функции. Все необходимые данные для функций должны передаваться в качестве параметров. Использование глобальных переменнх в функциях не допускается. По теме "Массивы". Найти: 1) сумму элементов в тех строках, которые не содержат отрицательных элементов; 2) минимум среди сумм элементов диагоналей, параллельных главной. По теме "Обработка символьных данных и...
C++ Создание папки в Linux Привет форумчане!! Подскажите апишку с директивой что бы в линухе можно было создать папку в указаной пользователем директории!? http://www.cyberforum.ru/cpp-beginners/thread634343.html
Включние заголовочного файла name.h C++
Доброго времени суток. Суть проблемы такова: допустим есть папка, в которой куча хедеров (.h) + в ней еще папки в которых еще куча хедеров и т.д. Есть главный main.h который подключает другие библиотеки из этой папки, а подключенные подключают другие и т.д. Так вот, во всех хедерах подключение написано следующем образом : //main.h #include <main/temp.h> #include <temp2.h> Само сабой это...
C++ Что такое char* ?
char* szString = "Randy"; Объясните, чем в данном случае является szString? Если это указатель, то почему ему напрямую можно присвоить значение? Ведь указатели с адресами работают. Очень уж непонятна мне роль * в этом примере.
C++ Шахматная доска http://www.cyberforum.ru/cpp-beginners/thread634310.html
Ребят, сейчас друг сидит на собеседовании, ему досталась какая-то слишком легкая задача (хотя работа вообще с кодингом не связана), но что-то он перенервничал и не может сообразить :) Вывести шахматную доску 8x8 (1 - белый квадратик, 0 - черный). Я быстренько накатал: int m; for (int i = 0; i < 8; i++) { if (!i) {
C++ Подсчет количества слов начинающихся с гласных, согласных, иных букв Начал изучать С++ и после очередной пройденной главы пытаюсь выполнить упражнение: напишите прогу, которая читает слова по одному за раз, пока не будет введена отдельная буква 'q'. После прога сообщает сколько слов начинаются с гласных, сколько с согласных, а также кол-во слов не попадающие в эту категорию (цифры например). Пример запуска следующий: Вводите слова (q - для выхода): The 12... подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
07.08.2012, 19:24     Отобразить вектор в обратном порядке не используя реверсивные итераторы
Для любого STL контейнера.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <vector>
#include <list>
#include <forward_list>
 
template<template<class...> class Container, class... Args>
std::ostream& operator << (std::ostream& os, const Container<Args...>& cont)
{
   auto start = std::begin(cont), end = std::end(cont);
   auto diff = std::distance(start, end);
   for (decltype(diff) i = diff - 1; i >= 0; --i)
   {
      auto it = start;
      std::advance(it, i);
      os << *it << " ";
   }
   os << std::endl;
   return os;
}
 
int main()
{
   std::vector<int> v = {1,2,3,4};
   std::cout << v << std::endl;
   std::list<int> l = {1,2,3,4};
   std::cout << l << std::endl;
   std::forward_list<int> f = {1,2,3,4};
   std::cout << f << std::endl;
}
http://liveworkspace.org/code/7bdb51...3b88d68ff4fa4b

Добавлено через 5 минут
Ну или так. Через итераторы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
#include <list>
#include <forward_list>
 
template<class Iterator>
std::ostream& print(std::ostream& os, Iterator start, Iterator end)
{
   auto diff = std::distance(start, end);
   for (decltype(diff) i = diff - 1; i >= 0; --i)
   {
      auto it = start;
      std::advance(it, i);
      os << *it << " ";
   }
   os << std::endl;
   return os;
}
 
int main()
{
   std::vector<int> v = {1,2,3,4};
   print(std::cout, std::begin(v), std::end(v));
   std::list<int> l = {1,2,3,4};
   print(std::cout, std::begin(l), std::end(l));
   std::forward_list<int> f = {1,2,3,4};
   print(std::cout, std::begin(f), std::end(f));
   int a[] = {1,2,3,4};
   print(std::cout, std::begin(a), std::end(a));
}
http://liveworkspace.org/code/009544...8966771e66db08
 
Текущее время: 04:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru