C ++ Programação: Operações em uma lista inteira

programas Alguns ++ C podem lidar com dados à medida que chega e dispensá-la. A maioria dos programas, no entanto, deve armazenar dados para processamento posterior. Uma estrutura que é usada para armazenar dados é conhecido genericamente como uma recipiente ou um coleção. (Muitas pessoas usam os termos de forma intercambiável.)

programas que começam geralmente dependem muito da matriz para armazenamento de dados. O recipiente matriz tem um par de propriedades agradáveis: Ele armazena e recupera as coisas rapidamente. Além disso, a matriz pode ser declarada para segurar qualquer tipo de objecto de uma forma de tipo seguro. Ponderado contra estas vantagens, no entanto, duas grandes negativos.

Em primeiro lugar, é preciso saber o tamanho da matriz no momento em que é criado. Este requisito geralmente não é viável, embora às vezes você vai saber que o número de elementos não pode exceder alguns # 147 de grande valor # 148.;

Os vírus, no entanto, normalmente este tipo de explorar # 147 não pode ser maior que esta suposição # 148-, que acaba por ser incorreto. Não há nenhuma maneira real para # 147-grow # 148- uma matriz, exceto para declarar uma nova matriz e copiar o conteúdo da matriz antiga para a mais recente versão, maior.

Em segundo lugar, inserir ou remover elementos em qualquer lugar dentro da matriz envolve elementos de cópia dentro da matriz. Este é caro em termos de memória e tempo de computação. Classificando os elementos dentro de uma matriz é ainda mais caro.

C ++ agora vem com o Standard Template Library, ou STL, que inclui muitos tipos diferentes de recipientes, cada um com seu próprio conjunto de vantagens (e desvantagens).

O Standard Template Library C ++ é uma biblioteca muito grande de recipientes por vezes complexas. Esta sessão é considerado apenas uma visão geral do poder do STL.

A biblioteca STL define certas operações em toda a lista. Por exemplo, a list :: sort () método diz # 147-eu vou tipo da lista para você, se você só vai me dizer quais objetos ir primeiro. # 148- Você faz isso através da definição operatorlt; (const t, const t). Este operador já está definido para os tipos intrínsecos e muitas classes de biblioteca, tais como corda. Por exemplo, você não precisa fazer nada para classificar uma lista de números inteiros:

Lista obteve-scores.push_back (10) -scores.push_back (1) -scores.push_back (5) -scores.sort () -

O programador deve definir seu próprio operador de comparação para as suas próprias classes se ela quer C ++ para classificá-los. Por exemplo, o tipo de comparação seguinte Aluna objetos por sua carteira de estudante:

bool operatorlt; (Student const s1, Student const s2) {return s1.ssID lt; s2.ssID-}

menu