C / C ++ - Programación GUI-Uso de la biblioteca Qt-Una mezcla de bibliotecas de plantillas estándar

  1.priority_queue <Tipo, Contenedor, Funcional>
  
  priority_queue <int, vector <int>, mayor <int>> q;
  
  // Montón de raíz pequeña, es decir, el elemento principal más pequeño;
  
  prioridad_queue <int> // Por defecto, montón de raíz grande, es decir El elemento principal es el más grande. (Actualizaciones subsiguientes)
  
  2.deque] [deque
  
  interfaces de vector similar (de un solo sentido de inserción y deleción)
  
  c.pop_back () pop el último elemento
  
  c.push_back (elem) insertar un elemento de detrás de
  
  la deque (inserción bidireccional y supresión)
  
  c.push_front (elem) Insertar un elemento desde el frente
  
  c.pop_front (elem) Eliminar el elemento más frontal
  
  c.clear () Borrar todos los elementos en la cola
  
  c.size () Devuelve el número de elementos en la cola
  
  3.
  
  stack stack <int> s;
  
  stack <cadena> s;
  
  s.push (x) sin valor de retorno,   inserte el elemento x en la
  
  pila
  
s.pop (); desapilar , sin valor de retorno s.top (); tome el elemento superior de la pila, devuelva el elemento superior
  
  s.empty (); Juzgue si la pila está vacía, devuelva 1 si está vacía; de lo contrario, devuelva 0
  
  s.size (); devuelva el número de elementos
  
  en la pila No hay función para proporcionar una operación vacía en la pila, pero puede realizar indirectamente la pila vacía,
  
  while (! s.empty ()) s.pop (); La
  
  clase de plantilla de pila requiere 2 parámetros de plantilla, uno para el tipo de elemento y otro para el tipo de contenedor, pero solo es necesario el tipo de elemento. Cuando el tipo de contenedor predeterminado, el valor predeterminado Para deque.

  Contenido
  
  1. Introducción adyacencia matriz tiene que calcular
  
  allí matriz de adyacencia 2. Descripción del código en la Figura
  
  3. La matriz de adyacencia de un código fuente completo gráfico dirigido
  
  favor indique la fuente: http: //www.cnblogs.com/skywang12345/
  
  Más Contenido: Catálogo de la serie de estructura de datos y algoritmos
  
  Introducción del
  
  gráfico dirigido de matriz de adyacencia El gráfico dirigido de matriz de adyacencia es un gráfico dirigido expresado por matriz de adyacencia.
  
  bubuko.com, la
  
  imagen de tela arriba de G2 contiene 7 vértices "A, B, C, D, E, F, G" y contiene "<A, B>, <B, C>, < B, E>, <B, F>, <C, E>, <D, C>, <E, B>, <E, D>, <F, G> "Un total de 9 bordes.
  
  La matriz a la derecha de la figura anterior es un diagrama esquemático de la matriz de adyacencia de G2 en la memoria. A [i] [j] = 1 significa que el i-ésimo vértice del j-ésimo vértice es un borde, A [i] [j] = 0 significa que no es un borde, y A [i] [j] significa el El valor en la fila i y la columna j; por ejemplo, A [1,2] = 1, que indica que el primer vértice (es decir, el vértice B) al segundo vértice (C) es un borde.
  
  Descripción del código del gráfico dirigido por la matriz de adyacencia
  
  1. Definición básica
  
  bubuko.com, botón de tela
  
  #define MAX 100
  
  class MatrixDG {
  
  privado:
  
  char mVexs [MAX]; // conjunto de vértices
  
  int mVexNum; // número de vértices
  
  int mEdgNum;
  

  
  public:
  
  // Cree un gráfico (ingrese sus propios datos)
  
  MatrixDG ();
  
  // Cree un gráfico (use la matriz provista)
  
  MatrixDG (char vexs [], int vlen, char edge [] [2], int elen);
  
  ~ MatrixDG ();
  
  // print matrix queue graph
  
  void print ();
  
  private:
  
  // lee un carácter de entrada
  
  char readChar ();
  
  // devuelve la posición de ch en mMatrix matrix
  
  int getPosition (char ch);
  
  };
  
  bubuko.com , Bubu hebilla
  
  MatrixDG no es la estructura de matriz de adyacencia correspondiente a la figura.
  
  mVexs se usa para guardar vértices, mVexNum es el número de vértices, mEdgNum es el número de aristas; mMatrix es una matriz bidimensional utilizada para guardar información de la matriz. Por ejemplo, mMatrix [i] [j] = 1, significa que "vértice i (es decir, mVexs [i])" y "vértice j (es decir, mVexs [j])" son puntos adyacentes, y el vértice i es el punto de partida, el vértice j es Terminar
  
  2. Crear una matriz
  
  Aquí hay dos métodos para crear una matriz. Uno usa datos conocidos y el otro requiere que el usuario ingrese los datos manualmente.
  
  2.1 Crear un gráfico (usando la matriz provista)
  
  bubuko.com, botón de tela
  
  / *
  
  * Crear un gráfico (usando la matriz provista)
  
  *
  
  * Descripción del parámetro:
  
  * vexs-vertex array
  
  * vlen-length of vertex array
  
  * edge-edge array
  
  * elen-length of edge array
  
  * /
  
  MatrixDG :: MatrixDG (char vexs [], int vlen, char edge [ ] [2], int elen)
  
  {
  
  int i, p1, p2;
  
  // inicializa el "número de vértices" y "número de aristas"
  
  mVexNum = vlen;
  
  mEdgNum = elen;
  
  // inicializa los "vértices"
  
  para (i = 0; i < mVexNum; i ++)
  
  mVexs [i] = vexs [i];
  
  // inicializa el "borde"
  
  para (i = 0; i <mEdgNum; i ++)
  
  {
  
  // lee el vértice inicial y el vértice final del borde
  
  p1 = getPosition (bordes [i] [0]);
  
  p2 = getPosition (bordes [i] [1]);
  
  mMatrix [p1] [p2] = 1;
  
  }
  
  }
  
  bubuko.com,
  
  la función de esta función es crear una matriz de adyacencia A la gráfica. De hecho, el gráfico dirigido creado por este método es el gráfico anterior G2. Su método de llamada es el siguiente:
  
  bubuko.com, bubuko
  
  char vexs [] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
  
  bordes de char [] [2] = {
  
  {'A', 'B'},
  
  {'B', 'C'},
  
  {'B', 'E'},
  
  {'B', 'F'},
  
  {'C', 'E'} ,
  
  {'D', 'C'},
  
  {'E', 'B'},
  
  {'E', 'D'},
  
  {'F', 'G'}};
  
  int vlen = sizeof (vexs) / sizeof (vexs [0]);
  
  int elen = sizeof (bordes) / sizeof (bordes [0]);
  
  MatrixDG * pG;
  
  pG = nuevo MatrixDG (vexs, vlen, bordes, elen);
  
  bubuko.com, botón de tela
  
  2.2 Cree un gráfico (ingrese su propio)
  
  bubuko.com, botón de tela
  
  / *
  
  * Cree un gráfico (ingrese sus propios datos)
  
  * /
  
  MatrixDG :: MatrixDG ()
  
  {
  
  char c1, c2;
  
  int i, p1, p2;
  
  // Ingrese el número de vértices "Y" número de aristas
  
  cout << "ingrese el número de vértice:";
  
  cin >> mVexNum;
  
  cout << "número de borde de entrada:";
  
  cin >> mEdgNum;
  
  if (mVexNum <1 || mEdgNum <1 || (mEdgNum> (mVexNum * (mVexNum-1))))
  
  {
  
  cout << "error de entrada: parámetros no válidos" << endl;
  
  regreso ;
  
  }
  
  // 初始化 "顶点"
  
  para (i = 0; i <mVexNum; i ++)
  
  {
  
  cout << "vértice (" << i << "):";
  
  mVexs [i] = readChar ();
  
  }
  
  // 初始化 "边"
  
  para (i = 0; i <mEdgNum; i ++)
  
  {
  
  // 读取 边 的 起始 顶点 和 结束 顶点
  
  cout << "edge (" << i << "):";
  
  c1 = readChar ();
  
  c2 = readChar ();
  
  p1 = getPosition (c1);
  
  p2 = getPosition (c2);
  
  if (p1 == - 1 || p2 == - 1)
  
  {
  
  cout << "error de entrada: borde no válido!" << endl;
  
  regreso ;
  
  }
  
  mMatrix [p1] [p2] = 1;
  
  }
  
  }

Supongo que te gusta

Origin www.cnblogs.com/zhenhua1618/p/12729852.html
Recomendado
Clasificación