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

Изменить значение элемента вектора, на который указывает итератор - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.62
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
16.04.2011, 21:29     Изменить значение элемента вектора, на который указывает итератор #1
Собственно вопрос, возможно ли изменить значение элемента вектора, на который указывает итератор, на значение последнего элемента вектора, без успользования удаления+вставки и если да, то как?
Среди стандартных функций ничего подходящего не нашел _http://azbukavb.narod.ru/cdoc/vector.html

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2011, 21:29     Изменить значение элемента вектора, на который указывает итератор
Посмотрите здесь:

C++ Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае
Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А C++
C++ Почему не запоминается правильно итератор вектора?
C++ Тип на который указывает итератор
C++ как создать копию объекта, на который ссылается итератор?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
16.04.2011, 21:38     Изменить значение элемента вектора, на который указывает итератор #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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main (void)
{
    const int SIZE = 10;
    int MAS[SIZE] = {1, 5, 3, 1, 1, 7, 5, 9, 3, 8};
    std::vector <int> vec (MAS, MAS + SIZE);
 
    std::cout << "Before: ";
    std::copy (vec.begin(), vec.end(), std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
 
    std::vector <int> :: iterator it1 = vec.begin() + 2; // на третий элемент, к примеру.
    std::vector <int> :: iterator it2 = vec.end() - 1; // на последний.
    *it1 = *it2;
 
    std::cout << "After: ";
    std::copy (vec.begin(), vec.end(), std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
 
    return 0;
}
Если да, то можно
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
16.04.2011, 21:43  [ТС]     Изменить значение элемента вектора, на который указывает итератор #3
Спасибо, всё оказалось гораздо проще, чем я полагал
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
16.04.2011, 21:45     Изменить значение элемента вектора, на который указывает итератор #4
Можно вот кстати еще проще:

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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main (void)
{
    const int SIZE = 10;
    int MAS[SIZE] = {1, 5, 3, 1, 1, 7, 5, 9, 3, 8};
    std::vector <int> vec (MAS, MAS + SIZE);
 
    std::cout << "Before: ";
    std::copy (vec.begin(), vec.end(), std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
 
    std::vector <int> :: iterator it1 = vec.begin() + 2; // на третий элемент.
    *it1 = vec.back();
 
    std::cout << "After: ";
    std::copy (vec.begin(), vec.end(), std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
 
    return 0;
}
Yandex
Объявления
16.04.2011, 21:45     Изменить значение элемента вектора, на который указывает итератор
Ответ Создать тему
Опции темы

Текущее время: 12:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru