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

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

Войти
Регистрация
Восстановить пароль
 
daslex
1290 / 534 / 110
Регистрация: 02.08.2011
Сообщений: 2,756
#1

STL Вектор Копирование элемнтов себя из себя - C++

04.06.2015, 02:14. Просмотров 345. Ответов 2
Метки нет (Все метки)

Смысл такой, вектор содержит несколько чисел
1,2,3,4,5,6,7

Я хочу на алгоритмах скопировать некоторый блок элементов.
например
1,2,3,4,5,6,7
1,3,4,5,6,6,7

как такой сдвиг делается алгоритмами? Наверняка должно быть проще чем у меня получилось.

Неправильно работающий Велосипед
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 <algorithm>
#include <vector>
#include <iterator>
using namespace std;
 
 
int main() {
  vector<int> v={1,2,3,4,5,6,7};
  vector<int> v2(1);
 
  int k(3);  //Позиция начала блока
  int n(3);  //Элементов в блоке
 
 
 vector<int>::iterator it(v.begin()+k);
 vector<int>::iterator it2(v.begin()+k+n);
 
 if (k-n<0)  n=k;
 
 
//Вывожу на экран основной вектор
 copy(v.begin(),v.end(),ostream_iterator<int>(cout,"  "));
 cout<<"\n";
 
  //Смещаю блок влево
 copy(it,it2,it-n);
 v.erase(v.end()-n,v.end());
 
 cout<<"\nAllEl: ";
  copy(v.begin(),v.end(),ostream_iterator<int>(cout,"  "));
 
 
}


Мне не столько исправить мое, сколько указать на подходящий алгоритм STL, чтобы знать как лучше и проще.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2015, 02:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос STL Вектор Копирование элемнтов себя из себя (C++):

Как ведет себя вектор при добавлении новых элементов пушбеком? - C++
Товарищи, ниже приведены несколько отрывков из моей программы. Интересует вопрос: почему не выполняется if в 23 строке? int...

Осуществить умножение n на себя - C++
Ввести n&gt;0. Осуществить умножение n на себя с выводом результата на экран до того как результат не превысит 10000. #include...

Каретка странно себя ведёт - C++
С недавнего времени , каретка в Visual studio начала менятся , при нажатии стр. влево(выделяет символ) ... Как исправить? VS2015

Програма неадекватно себя ведет - C++
Доброго время суток , помогите пожалуйста с кодом... Тут такое дело - програма запрашивает длинну и высоту стены( ширина 2 едигицы ) ...

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

Код выводит сам себя - C++
Как сделать так, чтобы прога выводила свой код. Т.е саму себя

2
Gr1f0nn
242 / 162 / 74
Регистрация: 30.09.2012
Сообщений: 690
04.06.2015, 02:27 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вы правильно начали использовать алгоритм copy.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
int main()
{
    std::vector<int> cont(std::istream_iterator<int>(std::cin), std::istream_iterator<int>());
    std::cout << "\n Your vector: \n";
    std::copy(cont.begin(), cont.end(), std::ostream_iterator<int>(std::cout, " "));
    std::copy(cont.begin()+2, cont.end()-1, cont.begin()+1); // <- 
    std::cout << "\n Your new vector: \n";
    std::copy(cont.begin(), cont.end(), std::ostream_iterator<int>(std::cout, " "));
    return 0;
}
1
daslex
1290 / 534 / 110
Регистрация: 02.08.2011
Сообщений: 2,756
04.06.2015, 02:56  [ТС] #3
понял
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2015, 02:56
Привет! Вот еще темы с ответами:

Умножить матрицу на себя транспонированую - C++
Буду краток: необходимо Умножить матрицу на себя транспонированую!!!(без хранения транспонированной) Как в вышмате это сделать я понимаю, а...

Файл инклюдид сам себя - C++
Здравствуйте, столкнулся с такой проблемой. Есть два класса. Структура первого заголовочного файла //Заголовочный файл Category.h ...

cin странно себя ведет - C++
Здравствуйте! Если в самом начале в майне написать char tch; cin.getline(tch,32) То все Ок, работает как надо. Но в в мэйне...

Умножить матрицу на себя транспонированую - C++
Буду краток: необходимо Умножить матрицу на себя транспонированую!!!(без хранения транспонированной) Как в вышмате это сделать я понимаю, а...


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

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

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