Форум программистов, компьютерный форум 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). Написать программу, которая с использованием метода базовой точки выводит на экран изображение кораблика. подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
30.03.2016, 14:09
Цитата Сообщение от sWINo_BACK_LAN Посмотреть сообщение
то есть, просто, копи диапазона с перекрытием без всяких извратов
Если у Вас POD-тип, и соответствующие итераторы,
то может быть использован, например, memmove,
который может копировать перекрывающиеся диапазоны.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <vector>
#include <algorithm>
#include <type_traits>
using namespace std;
 
 
 
 
struct Test
{
    Test& operator=(int x_){
        x= x_;
        return *this;
    }
    int x;
};
 
 
 
std::ostream& operator<<(std::ostream &stream, const Test &test)
{
    return stream << test.x ;
    
}
 
 
 
int main()
{
    std::cout << (std::is_pod<Test>::value?"":"non-") << "pod type"<< std::endl;
    vector<Test> v(20);
    vector<Test>::iterator iter;
    int c = 1;
    for(iter = v.begin();iter!=v.end();iter++)
    {
        *iter = c;
        c++;
    }
    
    cout<<"Ishodnii massiv:"<<endl;
    cout<<"|";
    
    for(iter = v.begin();iter!=v.end();iter++)
        cout<<*iter<<"|";
    cout<<endl;
    
    iter = v.begin();
    copy(iter+5,iter+15,iter+7);
    
    cout<<"Obrabotannii massiv:"<<endl;
    cout<<"|";
    for(iter = v.begin();iter!=v.end();iter++)
        cout<<*iter<<"|";
    cout<<endl;
}
http://rextester.com/TAS36876

А если у Вас non-pod тип, то уже получите то, что хотели:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//g++  4.9.3
 
#include <iostream>
#include <vector>
#include <algorithm>
#include <type_traits>
using namespace std;
 
 
 
 
struct Test
{
    Test():x(0){}
    Test(const Test& src){
        std::cout << "Copy Test(" << src.x << ")[" << (void*)&src << "] to Test(" << x << ")[" << (void*)this << "]" << std::endl;
        x = src.x;
    }
    
    
    Test& operator=(const Test& src){
        std::cout << "Assignment Test(" << src.x << ")[" << (void*)&src << "] to Test(" << x << ")[" << (void*)this << "]" << std::endl;
        x = src.x;
        return *this;
    }
    
    
    Test& operator=(int x_){
        x= x_;
        return *this;
    }
    int x;
};
 
 
 
std::ostream& operator<<(std::ostream &stream, const Test &test)
{
    return stream << test.x ;
    
}
 
 
 
int main()
{
    std::cout << (std::is_pod<Test>::value?"":"non-") << "pod type"<< std::endl;
    vector<Test> v(20);
    vector<Test>::iterator iter;
    int c = 1;
    for(iter = v.begin();iter!=v.end();iter++)
    {
        *iter = c;
        c++;
    }
    
    cout<<"Ishodnii massiv:"<<endl;
    cout<<"|";
    
    for(iter = v.begin();iter!=v.end();iter++)
        cout<<*iter<<"|";
    cout<<endl;
    
    iter = v.begin();
    copy(iter+5,iter+15,iter+7);
    
    cout<<"Obrabotannii massiv:"<<endl;
    cout<<"|";
    for(iter = v.begin();iter!=v.end();iter++)
        cout<<*iter<<"|";
    cout<<endl;
}
http://rextester.com/WMEI62144
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru