Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 14

Функция, в которой не копируются элементы

04.10.2018, 23:00. Показов 1758. Ответов 0
Метки move (Все метки)

Студворк — интернет-сервис помощи студентам
Дано задание сделать функцию, которая будет разделять вектор "слов" на предложения. В каждом слове есть bool переменная, хранящая true/false значению (конец/нет). Я правильно понял, что нужно сделать что-то такое?

Sentence<Token> - тот же vector<Token>.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template <typename Token>
vector<Sentence<Token>> SplitIntoSentences(vector<Token> tokens) {
    // Напишите реализацию функции, не копируя объекты типа Token
    Sentence<Token> sent;
    vector<Sentence<Token>> Sentences;
    for (auto i = make_move_iterator(tokens.begin()); i < make_move_iterator(tokens.end());) {
        if (!i->IsEndSentencePunctuation()) {
            if ( sent.size() >= 2 && (sent.end() - 1)->IsEndSentencePunctuation() && (sent.end() - 2)->IsEndSentencePunctuation()) {
                Sentences.push_back(move(sent));
            }
            sent.push_back(*i);
            i++;
        }
        else {
            sent.push_back(*i);
            i++;
        }
    }
    if (sent.size() > 0) {
        Sentences.push_back(move(sent));
    }
    return Sentences;
}
И еще вопрос, можно ли "слова" в векторе сделать некопируемыми, т.е чтобы он, допустим, не компилировался при копировании? Предполагаю, что нужно пошаманить с конструктором копирования и копирующего присваивания.
Структура слова
C++
1
2
3
4
5
6
7
8
9
10
11
struct TestToken {
    string data;
    bool is_end_sentence_punctuation = false;
 
    bool IsEndSentencePunctuation() const {
        return is_end_sentence_punctuation;
    }
    bool operator==(const TestToken& other) const {
        return data == other.data && is_end_sentence_punctuation == other.is_end_sentence_punctuation;
    }
};
Добавлено через 25 минут
Слова действительно можно сделать некопируемыми, уже разобрался, действительно оператор копирования и копирующего присаивания. Теперь узнал, что все-таки где-то копируется, но не могу понять, где. В саму функцию передаются данные через
C++
1
SplitIntoSentences(vector<TestToken>({ {"Split"}, {"into"}, {"sentences"}, {"!"} }))
, так что временный вектор не копируется, а перемещается.

Добавлено через 53 минуты
Копирование происходило в вызове функции, я ошибся
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.10.2018, 23:00
Ответы с готовыми решениями:

Построить матрицу у которой у которой добавлен столбец, элементы которого равны сумме элементов соответствующей строки
Помогите 1)Построить матрицу у которой у которой добавлен столбец,элементы которого равны сумме элементов соответствующей строки. 2)В...

Создать матрицу, элементы главной диагонали которой равны 0, а остальные элементы 1
Напишите пожалуйста полную программу на с++, срочно надо, а я вообще не шарю( Создать матрицу, элементы главной диагонали которой ...

Перемножить попарно элементы строки, в которой расположен максимум матрицы, на элементы столбца
В данной матрице найти наибольший элемент и перемножить попарно элементы строки , в которой он расположен , на элемент столбца в котором он...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.10.2018, 23:00
Помогаю со студенческими работами здесь

Заменить элементы строки, в которой находится максимальный элемент, на элементы того же столбца
1.Решение на листке. 2.Составить программу в Паскаль-ABC 3.Составить блок схему к программе. Задание 4. В матрице найдите...

дана целочисленная матрица A , размером а х м, найти в матрице первую строку, все элементы которой равны нолю, Умножить элементы столбца с таким же н
#include &lt;iostream&gt; using namespace std; int main() { const int a = 5; const int m = 4;

Дана функция, в которой x меняется с переменным шагом h
Помогите пожалуйста решить задачу. Уже видел похожие, но с этой совместить не смог, в программировании я нулевый. Дана функция, в которой X...

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

Функция, имя которой совпадает с именем класса
Вот например ... class e { int a; float b; public: //И здесь функция, имя которой равняется имени...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru