Resumen de la reseña C ++ (b)

tipo size_type

string :: size_type una función de cadena :: size () devuelve el valor, que es un entero sin signo, el siguiente código devolverá true;

bool main(void)
{
	string world;
	auto len = world.size(); // 虽然len=0但他是无符号的因此满足<-1
	if (len < -1) return true;
	else return false;
}

contenedor vector

imprimación C ++ señaló que la quinta edición de la página P91, vector menos que todos los valores son la misma manera, más eficiente es definir un vector vacío, y para agregar valor en tiempo de ejecución.
Cualquier uso del bucle iterativo o un rango para el cuerpo del bucle no se puede añadir un elemento de mando.

Después del final de la iterador

Después del final de la iterador iterador significa una posición después del último punto del elemento de contenedor, no sólo para el buque, de hecho, en la matriz tiene una definición similar. El siguiente ejemplo, int * b = & nums2 [10]; es legal, aunque nums índice máximo debe ser 9, pero esta afirmación se define como el final puntero del puntero array b nums2 es correcta.

	vector<int> nums = { 1,2,3,4,5,6,7,8,9,10 };
	auto end = nums.end();
	int nums2[10] = {};
	int* b = &nums2[10];

Una función de índice puede ser negativo

El índice de la matriz puede ser negativo, subscripting referencias de reconciliación son iguales. Por ejemplo, el siguiente código es legal. Sin embargo, un recipiente tal como índice de vector es un unsigned int, no puede aceptar subíndices negativos.

int nums2[10] = {};
int *b = &nums2[2];
int a = b[-2]; // 合法,相当于a = *(b-2);

Rango para el ciclo automático y

Para utilizar la instrucción para procesar rango de matriz multi-dimensional, además del bucle más interior, se debe hacer referencia las variables de control del bucle de todo tipo. Un segundo segmento de código siguiente ilegal (fila auto: a) en, fila debe ser int [4] del tipo variable. Sin embargo, ya que no es un tipo de referencia, se convierte automáticamente en una matriz de punteros a elementos del primer elemento de la matriz dentro de la fila inicializa compilador. Por lo tanto fila es de tipo int *, no podría existir la posibilidad de.

	int a[3][4];
	// 合法
	for (auto &row : a)
		for (auto &col : row)
		{
			...
		}
	// 非法,此处auto row : a,row被定义成int *类型。
	for (auto row : a)
		for (auto &col : row)
		{
			...
		}
Publicado seis artículos originales · ganado elogios 0 · Vistas 91

Supongo que te gusta

Origin blog.csdn.net/qq_33584870/article/details/104655030
Recomendado
Clasificación