Articles of stl

O thread std :: vector ou boost :: vector é seguro?

Eu tenho vários threads simultaneamente chamando push_back() em um object compartilhado de std::vector . std::vector seguro? Ou preciso implementar o mecanismo para torná-lo seguro? Eu quero evitar fazer um trabalho extra de “bloquear e liberar” porque sou um usuário de biblioteca em vez de um designer de biblioteca. Espero procurar por soluções thread-safe existentes para […]

Por que a dedução de argumento de modelo é desativada com std :: forward?

No VS2010 std :: forward é definido como tal: template inline _Ty&& forward(typename identity::type& _Arg) { // forward _Arg, given explicitly specified type parameter return ((_Ty&&)_Arg); } identity parece ser usada apenas para desabilitar a dedução do argumento de modelo. Qual é o propósito de desabilitá-lo intencionalmente neste caso?

É o tamanho de std :: array definido por padrão

Em C ++ 11 std::array é definido para ter armazenamento contíguo e desempenho que não é pior do que uma matriz, mas eu não posso decidir se os vários requisitos da norma implicam que std :: array tem o mesmo tamanho e memory layout como uma matriz normal. Isto é, você pode contar com sizeof(std::array) […]

Verificação do limite do GCC STL

Como faço para ativar a verificação de limite para operator[] e iteradores?

Como recuperar todas as chaves (ou valores) de um std :: map e colocá-los em um vetor?

Esta é uma das maneiras possíveis de sair: struct RetrieveKey { template typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } }; map m; vector keys; // Retrieve all keys transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey()); // Dump all keys copy(keys.begin(), keys.end(), ostream_iterator(cout, “\n”)); É claro que também podemos recuperar todos os valores do mapa definindo outro […]

Por que o std :: map é implementado como uma tree vermelha e preta?

Por que o std :: map é implementado como uma tree vermelha e preta ? Existem várias trees de busca binária equilibradas (BSTs) por aí. Quais foram os trade-offs de design na escolha de uma tree vermelha e preta?

Os modelos de contêiner padrão podem ser instanciados com tipos incompletos?

Às vezes, é útil instanciar um contêiner padrão com um tipo incompleto para obter uma estrutura recursiva: struct multi_tree_node { // Does work in most implementations std::vector child; }; struct trie_node { // Does not work in most implementations std::map next; }; Isso tende a funcionar porque os contêineres não possuem membros do tipo value_type […]

sorting de problemas usando a function de membro como comparador

tentando compilar o seguinte código Eu recebo este erro de compilation, o que posso fazer? O ISO C ++ proíbe obter o endereço de uma function de membro não estático não qualificada ou parêntese para formar um ponteiro para a function de membro. class MyClass { int * arr; // other member variables MyClass() { […]

Como resumir elementos de um vetor C ++?

Quais são as boas maneiras de encontrar a sum de todos os elementos em um std::vector ? Suponha que eu tenha um vetor vector std::vector vector com alguns elementos nele. Agora quero encontrar a sum de todos os elementos. Quais são as diferentes maneiras para o mesmo?

Melhor maneira de extrair um subvetor de um vetor?

Suponha que eu tenha um std::vector (vamos chamá-lo myVec ) de tamanho N Qual é a maneira mais simples de construir um novo vetor que consiste em uma cópia dos elementos X a Y, onde 0 <= X <= Y <= N-1? Por exemplo, myVec [100000] através de myVec [100999] em um vetor de tamanho […]