[C++]: bucle for automático

prefacio

La vida es como un viaje contra la carretera, y yo también soy un peatón.


  • autoDeje que el compilador infiera el tipo de la variable a través del valor inicial, por lo que la variable definida por auto debe tener un valor inicial.
  • También puede autodeclarar múltiples variables en una declaración, porque una declaración de declaración solo puede tener un tipo de datos básicos, por lo que los tipos de datos básicos iniciales de todas las variables en esta declaración deben ser los mismos:
  • ejemplo:
 auto i=0,*p=& i; 		 	//正确 
 auto sz=0,pi=3.14;			//错误,sz和pi的类型不一样
  • forUn bucle de rango que itera sobre cada elemento en una secuencia determinada y realiza alguna operación en cada valor de la secuencia :
for(declaration:expression)
		statement 

Uso uno:

string s("hello,world");
decltype(s.size()) punct_cnt=0;//decltype也是c++11特性,用于选择和返回操作数的数据类型。
for(auto c:s)//对于s中的每个字符
    if(ispunct(c))
        ++punct_cnt;

uso de decltype

  • autoTanto las decltypepalabras clave pueden deducir automáticamente el tipo de variable, pero su uso es diferente:
  • varnameRepresenta el nombre de la variable, valuerepresenta el valor asignado a la variable, exprepresenta una expresión
  • autovalueEl tipo de variable se deduce del valor inicial y el tipo de variable se deduce decltypede expla expresión , que valueno tiene nada que ver con : equivalente adecltype(exp) varname;
auto varname = value;
decltype(exp) varname = value;	

El uso de la función ispunct() está en el archivo <cctype>de encabezado

  • Comprueba si el carácter dado es un signo de puntuación: De forma predeterminada, los signos de puntuación son !"#$%&'()*+,-./:;?@[\]^_{|}~`.
int ispunct(int ch);

Uso dos:

string s("hello,world");
for(auto &c:s);//对于s中的每个字符,c是一个引用,赋值语句将会改变s中字符的值
    c=toupper(c);
cout<<s<<endl;

for(auto iter:vec) no cambia el valor del objeto iterable, for(auto &iter:vec) puede cambiar el valor del objeto iterativo.

  • Ambos pueden obtener el valor en el contenedor iterativo, pero el objeto del contenedor no cambiará cuando se use la iteración automática,

  • Con auto &iter, cualquier modificación a iter modificará directamente el valor correspondiente en el contenedor.

Supongo que te gusta

Origin blog.csdn.net/WandZ123/article/details/126789191
Recomendado
Clasificación