Articles of stl

Como faço para apagar um elemento de std :: vector por índice?

Eu tenho um std :: vector e eu quero excluir o n’th elemento. Como faço isso? std::vector vec; vec.push_back(6); vec.push_back(-17); vec.push_back(12); vec.erase(???);

C ++ Apaga elemento vetorial por valor em vez de por posição?

vector myVector; e vamos dizer que os valores no vetor são isso (nesta ordem): 5 9 2 8 0 7 Se eu quisesse apagar o elemento que contém o valor de “8”, acho que faria isso: myVector.erase(myVector.begin()+4); Porque isso apagaria o 4º elemento. Mas existe alguma maneira de apagar um elemento baseado no valor “8”? […]

Maneira eficiente de ler um arquivo em um std :: vector ?

Eu gostaria de evitar cópias desnecessárias. Eu estou apontando para algo ao longo das linhas de: std::ifstream testFile( “testfile”, “rb” ); std::vector fileContents; int fileSize = getFileSize( testFile ); fileContents.reserve( fileSize ); testFile.read( &fileContents[0], fileSize ); (o que não funciona porque a reserve não insere realmente nada no vetor, então não consigo acessar [0] ). […]

Por que o C ++ STL não fornece nenhum contêiner de “tree”?

Por que o C ++ STL não fornece nenhum contêiner de “tree” e qual é a melhor opção a ser usada? Eu quero armazenar uma hierarquia de objects como uma tree, em vez de usar uma tree como um aprimoramento de desempenho …

reduzir a capacidade de um vetor stl

Existe uma maneira de reduzir a capacidade de um vetor? Meu código insere valores em um vetor (sem saber seu número antecipadamente) e, quando isso termina, os vetores são usados ​​apenas para operações de leitura. Eu acho que eu poderia criar um novo vetor, fazer um .reseve () com o tamanho e copiar os itens, […]

Como faço para classificar um std :: vector pelos valores de um std :: vector diferente?

Eu tenho vários std::vector , todos do mesmo tamanho. Eu quero classificar um desses vetores e aplicar a mesma transformação a todos os outros vetores. Existe uma maneira legal de fazer isso? (preferencialmente usando o STL ou Boost)? Alguns dos vetores mantêm int s e alguns deles std::string s. Pseudo-código: std::vector Index = { 3, […]

remove_if equivalente para std :: map

Eu estava tentando apagar uma gama de elementos do mapa com base em condições particulares. Como faço isso usando algoritmos STL? Inicialmente, pensei em usar remove_if mas não é possível, pois remove_if não funciona para o container associativo. Existe algum algoritmo equivalente “remove_if” que funcione para o mapa? Como uma opção simples, pensei em percorrer […]

Como evitar vazamentos de memory ao usar um vetor de pointers para objects alocados dinamicamente em C ++?

Eu estou usando um vetor de pointers para objects. Esses objects são derivados de uma class base e estão sendo alocados e armazenados dinamicamente. Por exemplo, eu tenho algo como: vector Enemies; e eu vou estar derivando da class Enemy e então alocando dinamicamente memory para a class derivada, assim: enemies.push_back(new Monster()); Quais são as […]

Quais requisitos as classs da chave std :: map devem atender para serem chaves válidas?

Eu quero mapear objects de uma determinada class para objects de outro. A class que eu quero usar como chave, no entanto, não foi escrita por mim e é uma struct simples com alguns valores. O std :: map ordena seu conteúdo, e eu queria saber como ele faz isso, e se qualquer class arbitrária […]

Usando o comparador std :: set personalizado

Eu estou tentando alterar a ordem padrão dos itens em um conjunto de inteiros para ser lexicographic em vez de numérico e não consigo obter o seguinte para compilar com g + +: file.cpp: bool lex_compare(const int64_t &a, const int64_t &b) { stringstream s1,s2; s1 << a; s2 << b; return s1.str() < s2.str(); } […]