Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 02.01.2020
Сообщений: 25

Метод insert с итераторами

21.04.2020, 17:09. Показов 3528. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброе время суток
Получил задачу по С++ с написанием "календаря".
Из функций должно быть добавление задач, вывода задач с конкретного дня, а так же перехода на новый месяц.
И к последней функции был совет использовать метод insert - которые я как бы еще не знаю, а найти нормальный Гайд и описанием этого метода и применением на векторах не удалось. А так же просьба что бы все дни которые из лишних дней старого месяца переместились в последний день нового месяца, для этого и советовали метод insert.

Вообще я полазил по форуму и вроде как нашёл решение, хотя для меня оно кажется очень большим и запутанным.
Вот ссылка: https://www.cyberforum.ru/blog... g4838.html

Вообщем я постарался сделать что-то подобное но исходя из своего видная и у меня конечно же не получилось сделать нормальный переход с копированием дней с предыдущего.
Я пока не заморачивался с изменением самого вектора если следующий месяц короче, так как даже не знаю как перенести дни в последний день.

Вот мой код:
P.S. изменяюсь за мой не очень понятный английский, я его не очень хорошо знаю и пока только учусь правильно называть переменные и функции.

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <cmath>
#include <string>
#include <algorithm>
#include <vector>
 
 
using namespace std;
 
void addEvent(vector<vector<string>>& Event, int day, string task){
        Event[day].push_back(task);
}
 
void dumbEventsInDay (const vector<vector<string>>& Event, int day){
    cout << Event[day].size() << " - ";
    for (string v : Event[day] ){
            cout << v << " ";
    }
    cout << endl;
}
 
void nextMonth (vector<vector<string>>& Month, vector<int> Months,int WhichMonth){ // эта функция у меня не получается вообще.
    if(Month.size()<=Months[WhichMonth]){
        Month.resize(Months[WhichMonth]);
    } else {
        int r = Month.size()-WhichMonth;
        for (int i = 1; i<r; i++){
        Month[WhichMonth].insert(end(Month[WhichMonth]), begin(Month[WhichMonth+i]), end(Month[WhichMonth+i])); 
        }
    }
}
 
void PrintVector (vector<vector<string>> anyVector){
    int i = 0;
    for (vector<string> v : anyVector){
        cout << "vector with index " << i << " = ";
        for (string s : v) {
            cout << s << ", ";
        }
        cout << "   ";
        i++;
    }
}
 
int main(int argc, const char * argv[]) {
    int command = 0;
    vector<vector<string>> actuallyMonth(31);
    vector<int> months = {31,28,31,30,31,30,31,31,30,31,30,31};
    vector<string> commands = {"1 - add ","2 - dumb ","3 - next", "4 - exit", "5 - print month"};
    cout << "What will you do?"<< endl;
    
    while (command!=4){
        for (string c : commands){
            cout << c << endl;
        }
    cin >> command;
    switch (command) {
        case 1:
            {string task;
            int day;
            cout << "add task ";
            cin >> task;
            cout << "In wich day? ";
            cin >> day;
            day--;
            addEvent(actuallyMonth, day, task);
            break;}
        case 2:
           { int dayDumb;
            cout << "Wich day? ";
            cin >> dayDumb;
            dayDumb--;
            dumbEventsInDay(actuallyMonth, dayDumb);
            break;}
        case 3:
            int month;
            cout << "Which month next? " << endl;
            cin >> month;
            month--;
            nextMonth(actuallyMonth, months, month);
            break;
        case 5:
            PrintVector(actuallyMonth);
            break;
//
//        default:
//            break;
    }
    }
 
    cout << endl;
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2020, 17:09
Ответы с готовыми решениями:

Метод Insert
Добрый день! Есть база данных в access. Есть обработчик на кнопке запись DataModule3.ADOTable1.Insert; ...

Не работает метод insert в Tkinter
Здравствуйте! Подскажите, почему метод insert в модуле Tkinter не вставляет текст переменной text в указанный номер строки текстового поля...

Метод insert для массива объектов
Добрый день, подскажите пожалуйста, если нужно в массив простых чисел и добавлять числа один за другим public class DataPile { ...

4
9 / 5 / 4
Регистрация: 22.04.2016
Сообщений: 63
22.04.2020, 01:01
Лучший ответ Сообщение было отмечено D_DWow как решение

Решение

как то так? если что пиши
C++
1
2
3
4
5
6
7
8
9
10
void nextMonth (vector<vector<string>>& Month, vector<int> Months,int WhichMonth){ // эта функция у меня не получается вообще.
    if(Month.size()<=Months[WhichMonth]){
        Month.resize(Months[WhichMonth]);
    } else {
        while(Month.size() > Months[WhichMonth]){
            Month[Months[WhichMonth] - 1].insert(end(Month[Months[WhichMonth] - 1]), begin(Month.back()), end(Month.back()));
            Month.pop_back();
        }
    }
}
1
1 / 1 / 0
Регистрация: 02.01.2020
Сообщений: 25
22.04.2020, 11:18  [ТС]
Большое спасибо за помощь
Очень помог твой код в понимании как работает метод insert)
Два дня с этим мучился)


А можешь подсказать почему ты перед insert указал на индекс whichMonth-1, а не просто whichmonth.
Я уже пробывал без -1, код не работает, но и я до конца не пойму, почему так.

C++
1
2
 Month[Months[WhichMonth] - 1].insert(end(Month[Months[WhichMonth] - 1]), begin(Month.back()), end(Month.back()));
            Month.pop_back();
еще раз большое спасибо за помощь!
0
9 / 5 / 4
Регистрация: 22.04.2016
Сообщений: 63
22.04.2020, 20:02
Лучший ответ Сообщение было отмечено D_DWow как решение

Решение

Дней 28 -> максимальный индекс 27
1
1 / 1 / 0
Регистрация: 02.01.2020
Сообщений: 25
23.04.2020, 11:04  [ТС]
Точно)
Спасибо большое)

Добавлено через 9 минут
Оставлю ссылку здесь на решение этой же задачи другим способом.

И особая благодарность МАМОНТ-у)

https://www.cyberforum.ru/blog... g4838.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2020, 11:04
Помогаю со студенческими работами здесь

Метод insert не видит значения edit-ов
Метод insert не видит значения edit-ов(вернее видит только если их явно указать в стойствах), в следствии чего добавляются просто пустые...

Классы, вектор, конструктор, метод insert
Вечер добрый форумчане, с такой проблемой столкнулся. Есть класс &quot;вектор&quot; не шаблонный класс,а самостоятельно написанный, так вот когда я...

Написать для динамического массива метод insert()
Парни препод задал задачку: Написать для динамического массива метод insert() public class DynamicString { public...

Вставить подстроку в строку не используя метод Insert
Доброго времени суток! Подскажите, пожалуйста, каким образом можно вставить подстроку в строку без использования функции insert(), если...

Метод Insert не перемещает на указанный индекс желаемый таб в TabControl
Всем день добрый! Проблема в следующем - создаю контрол табов - например у меня их 2 штуки, метод Insert не перемещает на указанный...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru