Как в multiset
удалять элементы на промежутке [first, last]
(рамки промежутка вводятся с консоли)?
first и last - условные позиции элементов, если бы они имели индексы
Если я вас правильно понял, то вы имеете в виду что-то вроде этого
#include <iostream>
#include <set>
int main()
{
std::multiset<int> set = { 0, 2, 4, 6, 8 };
for ( const auto &i : set ) std::cout << i << ' ';
std::cout << std::endl;
int lower = 3, upper = 7;
set.erase( set.lower_bound( lower ), set.upper_bound( upper ) );
for ( const auto &i : set ) std::cout << i << ' ';
std::cout << std::endl;
}
Вывод программы на консоль:
0 2 4 6 8
0 2 8
Если вы имеете в виду что-то вроде индексов, то код может выглядеть следующим образом
#include <iostream>
#include <set>
#include <iterator>
int main()
{
std::multiset<int> set = { 0, 2, 2, 4, 4, 4, 6, 6, 8 };
for ( const auto &i : set ) std::cout << i << ' ';
std::cout << std::endl;
std::multiset<int>::size_type lower = 3, upper = 5;
set.erase( std::next( std::begin( set ), lower ),
std::next( std::begin( set ), upper + 1 ) );
for ( const auto &i : set ) std::cout << i << ' ';
std::cout << std::endl;
}
Вывод программы на консоль:
0 2 2 4 4 4 6 6 8
0 2 2 6 6 8
То есть удаляются элементы с "индексами" 3, 4, 5. Индексация ведется от 0.
Вы можете также вставить проверку индексов, что они не выходят за допустимый диапазон. Например, проверку для верхнего индекса может выглядеть так, как показано в демонстрационной программе ниже
#include <iostream>
#include <set>
#include <iterator>
int main()
{
std::multiset<int> set = { 0, 2, 2, 4, 4, 4, 6, 6, 8 };
for ( const auto &i : set ) std::cout << i << ' ';
std::cout << std::endl;
std::multiset<int>::size_type lower = 3, upper = 10;
upper = upper < set.size() ? upper + 1 : set.size();
set.erase( std::next( std::begin( set ), lower ),
std::next( std::begin( set ), upper ) );
for ( const auto &i : set ) std::cout << i << ' ';
std::cout << std::endl;
}
Вывод программы на консоль
0 2 2 4 4 4 6 6 8
0 2 2
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Не так давно услышал о том, что существует способ управлять памятью самому, а не использовать, например, new и deleteМожет кто-нибудь сможет осветить...
QTableWidgetУсловие: Создать квадратную матрицуМатрица должна содержать слова из 4х букв английского алфавита