std::map with iterators to std::list from iterators of std::map

user1641854

How should I declare std::list(1) with iterators to std::map, which maps std::string to iterators of std::list (1) ? Is it possible?

std::list<std::map<std::string, (1) ???>::iterator>;
std::map<std::string, (1) ???::iterator>;

The reason I want this - FIFO queue with ability to fast remove by key.

One possible solution:

struct decl_t {
    typedef std::map< std::string, decl_t > map_t;
    typedef std::list< std::pair< int, typename map_t::iterator > > list_t;

    list_t::iterator it;
};
user1641854

Here is ugly, but complete example

#include <cassert>
#include <iostream>
#include <list>
#include <map>
#include <string>

struct decl_t {
    typedef std::map<std::string, decl_t> map_t;
    typedef std::list<std::pair<int, typename map_t::iterator>> list_t;

    list_t::iterator it;
};

int main(int argc, const char* argv[])
{
    decl_t::map_t map;
    decl_t::list_t list;

    auto list_it = list.emplace(list.end(), 42, decl_t::map_t::iterator());
    const auto pair = std::make_pair(std::string("key"), decl_t{list_it});
    auto result = map.insert(pair);
    assert(result.second);
    auto map_it = result.first;
    list_it->second = map_it;

    std::cout << list_it->second->first << std::endl;
    std::cout << map_it->second.it->first << std::endl;
}

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Using std::find() With Reverse Iterators

Access to iterators of std containers by a template

std::unordered_map insert invalidates only iterators but not references and pointers to the element node

Travessia de ordem de nível de uma árvore usando std :: map :: iterators

std :: map到std :: list导致SIGSEGV

why can't I construct an std::span from iterators?

std :: vector transform to std :: map

Initializing std::list elements of a std::unordered_map

std::move and map assignment

std :: map transformer template

Compreendendo std :: map :: find

Decrement of end of std::map

Modify key of std::map

Inicialize meu std :: map

find element with max value from std::map

std :: map write / read from multiple threads

How to to pass iterators to the std::lower_bound() comparison function?

What is the default behavior of a std::map if, rather than the value, the KEY is a std::list or std::vector?

std :: reduzir com std :: unordered_map

std :: unique_ptr com std :: map

Returning std::function held in a map of std::variant

Passing an std::pair reference taken from an std::map to a function that accepts an std::pair refererence

Como usar std :: bind com std :: function e std :: map

Por que std :: find_if usado em std :: istream_iterators parece retornar o último elemento?

Need a C++ map and list which contain iterators to each other

Problema com std :: map tendo um valor std :: map

Problema com std :: map tendo um valor std :: map

como aplicar corretamente std :: map

std :: map erase preservando iteradores

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo