Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
#1

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

04.06.2015, 02:14. Просмотров 354. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2015, 02:14
Ответы с готовыми решениями:

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

Осуществить умножение n на себя
Ввести n&gt;0. Осуществить умножение n на себя с выводом результата на экран до...

Union что из себя представляет?
Читал много книг и там про него не чего не было сказано, парни объясните мне...

Перемножить матрицу на саму себя
Подскажите пожалуйста, как можно реализовать эту задачу: Нужно будет...

Цикл While странно себя ведет
Пишу программу которая считывает из каждой строки массив неизвестной длины.Цикл...

2
Gr1f0nn
242 / 162 / 133
Регистрация: 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
1291 / 535 / 177
Регистрация: 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

Умножить матрицу на себя транспонированую
Буду краток: необходимо Умножить матрицу на себя транспонированую!!!(без...

Умножить матрицу на себя транспонированую
Буду краток: необходимо Умножить матрицу на себя транспонированую!!!(без...

cin странно себя ведет
Здравствуйте! Если в самом начале в майне написать char tch;...


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

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

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