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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
#1

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

07.08.2012, 16:40. Просмотров 3392. Ответов 23
Метки нет (Все метки)

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

никак не могу в цикле вывести последний(самый первый) элемент
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2012, 16:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отобразить вектор в обратном порядке не используя реверсивные итераторы (C++):

Разработать программу для работы с массивами: отобразить в обратном порядке одномерный массив - C++
написать программу, которая будет создавать и выводить на экран в обратном порядке одномерный массив целых чисел

Используя рекурсию напечатать вводимые числа в обратном порядке - C++
1. Написать рекурсивную процедуру, которая считывает вводимые с клавиатуры числа до тех пор, пока не будет обнаружен нуль. Затем введенные...

Напечатать в обратном порядке заданный текст используя рекурсию - C++
Напечатать в обратном порядке заданный текст, используя рекурсию.

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

Используя стек, распечатать слова из текстового файла в обратном порядке - C++
помогите решить задачу. используя стек распечатать слова в текстовом файле в обратном порядке. заранее спасибо !!:(

Не используя других массивов, переставить элементы заданного массива в обратном порядке - C++
Дан массив целых чисел. Не используя других массивов, переставить элементы массива в обратном порядке. Заранее благодарю.

23
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
07.08.2012, 16:51 #2
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
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int main()
{
    vector<int> vi;
    vi.push_back(1);
    vi.push_back(2);
    vi.push_back(3);
    vi.push_back(4);
    vi.push_back(5);
 
    for(vector<int>::const_iterator it = vi.begin(); it != vi.end(); ++it)
        cout << *it << endl;
    cout << "----------" << endl;
 
    reverse(vi.begin(), vi.end());
 
    for(vector<int>::const_iterator it = vi.begin(); it != vi.end(); ++it)
        cout << *it << endl;
 
 
    return 0;
}
не устроит?
1
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
07.08.2012, 17:04  [ТС] #3
C++
1
2
3
4
reverse(vi.begin(), vi.end());
 
    for(vector<int>::const_iterator it = vi.begin(); it != vi.end(); ++it)
        cout << *it << endl;
тут уже получается реверсивный итератор
0
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
07.08.2012, 17:12 #4
Нет. Тут реверсирован сам вектор, итераторы же - прямые. Реверсивные итераторы - это rbegin() / rend().

Добавлено через 3 минуты
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 <algorithm>
using namespace std;
 
int main()
{
    vector<int> vi;
    vi.push_back(1);
    vi.push_back(2);
    vi.push_back(3);
    vi.push_back(4);
    vi.push_back(5);
 
    for(vector<int>::const_iterator it = vi.begin(); it != vi.end(); ++it)
        cout << *it << endl;
    cout << "----------" << endl;
 
    for(vector<int>::const_reverse_iterator rit = vi.rbegin(); rit != vi.rend(); ++rit)
        cout << *rit << endl;
    cout << "----------" << endl;
 
    reverse(vi.begin(), vi.end());
    for(vector<int>::const_iterator it = vi.begin(); it != vi.end(); ++it)
        cout << *it << endl;
 
 
    return 0;
}
1
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
07.08.2012, 17:30  [ТС] #5
понял, спасибо
0
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
07.08.2012, 18:07 #6
CheshireCat, а такой вариант для вектора является приемлемым?

C++
1
2
for(vector<int>::const_iterator it = vi.end() - 1; it >= vi.begin(); --it)
        cout << *it << endl;
1
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
07.08.2012, 18:10  [ТС] #7
Цитата Сообщение от Schizorb Посмотреть сообщение
CheshireCat, а такой вариант для вектора является приемлемым?

C++
1
2
for(vector<int>::const_iterator it = vi.end() - 1; it >= vi.begin(); --it)
        cout << *it << endl;
краш, пробовал уже
1
Jupiter
07.08.2012, 18:12
  #8

Не по теме:

что за задача в которой нельзя использовать реверсные итераторы?

0
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
07.08.2012, 18:24  [ТС] #9
Цитата Сообщение от Jupiter Посмотреть сообщение

Не по теме:

что за задача в которой нельзя использовать реверсные итераторы?

2 варианта задачи
условие в заголовке темы
1) решить с реверсивными итераторами
2) тоже самое с использованием обычных итераторов
0
Миниатюры
Отобразить вектор в обратном порядке не используя реверсивные итераторы  
Арсенал
144 / 66 / 6
Регистрация: 30.12.2011
Сообщений: 137
07.08.2012, 18:28 #10
DaskOFF,

Так не идет?

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
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    cout.flush();
 
    vector<int> v_int;
 
    for (int i=0; i<10; i++)
        v_int.push_back(i);
 
    for (size_t i=0; i<v_int.size(); i++)
        cout << v_int.at(i) << ' ';
    cout << endl;
 
    while (!v_int.empty())
    {
        cout << v_int.back() << ' ';
        v_int.pop_back();
    }
    cout << endl;
 
 
    return 0;
}
Вывод послежднего элемента вектора:

C++
1
2
  cout << v_int.back() << ' ';
        v_int.pop_back();
0
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
07.08.2012, 18:29  [ТС] #11
Цитата Сообщение от Арсенал Посмотреть сообщение
DaskOFF,

Так не идет?
надо с использованием итераторов, условия выше на скрине
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
07.08.2012, 18:48 #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
 
int main() {            
 
    std::vector<int> v = {1,2,3,4,5};    
        
//    std::reverse_copy(v.begin(), v.end(), 
//                      std::ostream_iterator<int>(std::cout, "\n"));
                      
    for(auto iter = v.end(); iter != v.begin(); )
        std::cout << *(--iter) << "\n";       
}
1
Арсенал
144 / 66 / 6
Регистрация: 30.12.2011
Сообщений: 137
07.08.2012, 18:49 #13
Интересное поведение получается

C++
1
2
3
4
5
6
7
8
9
10
vector<int> v_int;
 
    for (int i=0; i<10; i++)
        v_int.push_back(i);
 
    vector<int>::iterator f_it = v_int.begin()-1; слева от первого элемента
    vector<int>::iterator l_it = v_int.end()-1; текущий последний элемент
 
    while (f_it != l_it)
        cout << *l_it-- << ' ';
1
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 18:52 #14
И даже так не катит?
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
31
32
33
34
#include <iostream>
#include <vector>
#include <stack>
 
int main()
{
  std::vector<int> vec;
  vec.push_back(1);
  vec.push_back(2);
  vec.push_back(3);
  vec.push_back(4);
  vec.push_back(5);
 
  std::stack<int> stack;
  for (std::vector<int>::iterator i = vec.begin();
       i != vec.end();
       ++i)
  {
    stack.push(*i);
  }
  vec.clear();
  while (!stack.empty()) {
    vec.push_back(stack.top());
    stack.pop();
  }
 
  for (std::vector<int>::iterator i = vec.begin();
       i != vec.end();
       ++i)
  {
    std::cout << *i << " ";
  }
  return 0;
}
1
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
07.08.2012, 19:02  [ТС] #15
rangerx, работает, только auto не было в той теме

Добавлено через 3 минуты
Арсенал, крашит

тут вначале решили с помощью реверса вектора, тоже не подходит, этот алгоритм позже проходится

Добавлено через 2 минуты
~OhMyGodSoLong~, тоже самое, что и командой реверс, только переворачиваете вектор с помощью стека
0
07.08.2012, 19:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2012, 19:02
Привет! Вот еще темы с ответами:

Маcсив: Не используя других массивов, переставить его элементы в обратном порядке. - C++
Дан массив X целых чисел. Не используя других массивов, переставить его элементы в обратном порядке.

Дан одномерный массив. Не используя других массивов, переставить его элементы в обратном порядке - C++
Дан одномерный массив. Не используя других массивов, переставить его элементы в обратном порядке.

Дан одномерный массив.Не используя других массивов переставить его элементы в обратном порядке. - C++
Дан одномерный массив.Не используя других массивов переставить его элементы в обратном порядке.

Дан одномерный массив. Не используя других массивов, переставить его элементы в обратном порядке - C++
Задача №2 &quot;Дан одномерный массив. Не используя других массивов, переставить его элементы в обратном порядке&quot; ____________ Надеюсь на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru