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

STL. Алгоритм copy() - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ переход на новую строку http://www.cyberforum.ru/cpp-beginners/thread840824.html
подскажите пожалуйста есть задача надо откоректировать текс так что бы в каждом рядку было до N символов вот пока до чего я дошол for( int i=0; i<s.length();i++) { if(s.at(i)==n) а как вот дальше организовать переход на новую строку?
C++ Файлы произвольного доступа История такая: имеется лабораторная работа по файлам, текстовые работают на ура, но вот произвольного доступа... Дело в том, что имеется иерархия классов (ромб) и писать нужно самый нижний класс. Пишется он вроде как нормально, но вот на считывании все время ошибка выполнения. что это может быть и как это обойти без ущерба шаблонности?) Если что, в классах никаких указателей нет вообще, насколько... http://www.cyberforum.ru/cpp-beginners/thread840822.html
C++ Удаление элементов в списке
Помогите написать программу(скорее функцию), где нужно удалить в списке элементы с позиции N по K. Список циклический однонаправленный. Добавлено через 5 минут И не могли бы вы подсказать что неправильно в удалении хвоста списка(последнего числа). Вроде как удаляет но выводить список потом не хочет.Вот часть программы: struct List { int info; List *next; }; List* head=NULL;
C++ Файлы. Получить значения функции , вычисленной с заданной точностью e
В бинарном файле записаны вещественные числа. Получить значения функции , вычисленной с заданной точностью e, для каждого числа, имеющегося в файле.
C++ Как работает эта функция? http://www.cyberforum.ru/cpp-beginners/thread840804.html
Вот код программы крестики-нолики. Пожалуйста, объясните на пальцах как работает ф-ция "botMove". Мне нужно написать такую же, но у меня двумерный массив. Вообще непонятно как компьютер всегда правильно ходит и откуда взялось число 49. #include <iostream> #include <clocale> #include <windows.h> #include <time.h> using namespace std; char field = {'-', '-', '-', '-', '-', '-', '-', '-',...
C++ Написать программу, которая с использованием метода базовой точки выводит на экран изображение кораблика. Собственно само задание. 6). Написать программу, которая с использованием метода базовой точки выводит на экран изображение кораблика. подробнее

Показать сообщение отдельно
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.04.2013, 22:23     STL. Алгоритм copy()
Цитата Сообщение от fuzzytoozy Посмотреть сообщение
совершенно не понял смысл этого предложения. Почему будем считать в качестве исходных данных 7й элемент, да еще и переносить его в 9й? У меня что то туго совсем с этим.
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|
участки перекрываются, а коллекция то одна и та же
"Если мы воспользуемся copy, то мы перезапишем сначала 7 элемент 5-м, потом 8-й шестым",
а дальше мы скопируем 7-й элемент в 9-й, но в мы же только что в 7-й уже записали 5-ку.

Добавлено через 30 минут
Цитата Сообщение от fuzzytoozy Посмотреть сообщение
Может кто нибудь на примере этого кода разжевать, что делают алгоритм copy и алгоритм copy_backward и в чем их принципиальное отличие. А так же объяснить подробно, что хотел автор в этой задаче.
если трудно понять пример, подставь более просты числа
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 <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
    std::vector<int> vec1(9);
    std::vector<int> vec2;
 
    for(int j = 1; j < 10; ++j)
        vec2.push_back(j);
 
    std::cout << "Before changes:" << std::endl;
    std::copy(vec1.begin(), vec1.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    std::copy(vec2.begin(), vec2.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    std::copy(vec2.begin(), vec2.begin() + 4, vec1.begin());
    std::cout << "After copy:" << std::endl;
    std::copy(vec1.begin(), vec1.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    std::copy_backward(vec2.begin(), vec2.begin() + 4, vec1.end());
    std::cout << "After copy_backward:" << std::endl;
    std::copy(vec1.begin(), vec1.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
}
copy(a, b, c) - копирует элементы из диапазона [a, b) слева направо в диапазон [c, c + b -a)
copy_backward(a, b, c) - копирует элементы из диапазона [a, b) справа налево в диапазон [c - b + a, c)
 
Текущее время: 20:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru