Удалить 5 первых элементов QMap - PullRequest
0 голосов
/ 01 апреля 2011

Как я могу удалить 5 первых элементов QMap?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

Что-то вроде этого, вероятно, будет работать:

const size_t count = std::min<size_t>(5, m.size());
for(int i = 0; i < count; ++i) {
    m.erase(m.begin());
}

DEMO

#include <iostream>
#include <map>
#include <algorithm>

int main() {

    std::map<int,int> m;
    m.insert(std::make_pair(0,0));
    m.insert(std::make_pair(1,1));
    m.insert(std::make_pair(2,2));
    m.insert(std::make_pair(3,3));
    m.insert(std::make_pair(4,4));
    m.insert(std::make_pair(5,5));
    m.insert(std::make_pair(6,6));

    const size_t count = std::min<size_t>(5, m.size());
    for(size_t i = 0; i < count; ++i) {
        m.erase(m.begin());
    }

    for(std::map<int,int>::const_iterator it = m.begin(); it != m.end(); ++it) {
        std::cout << it->second << std::endl;
    }
}

ДЕМО с использованием QMap

#include <iostream>
#include <QMap>

int main() {

    QMap<int,int> m;
    m[0] = 0;
    m[1] = 1;
    m[2] = 2;
    m[3] = 3;
    m[4] = 4;
    m[5] = 5;
    m[6] = 6;

    const size_t count = qMin<size_t>(5, m.size());
    for(size_t i = 0; i < count; ++i) {
        m.erase(m.begin());
    }

    for(QMap<int,int>::const_iterator it = m.begin(); it != m.end(); ++it) {
        std::cout << it.value() << std::endl;
    }
}
0 голосов
/ 01 апреля 2011

В Картах не существует таких понятий, как «Первый» и «Последний».QMap<Key, T>, в то время как к элементам обращается часть Key, которая обычно не числовая

...