C++11可变参数函数与for循环
2014-09-25 12:09
721 查看
//auto为自动变量类型设置符 例如 auto p = 1; 则p为int类型; auto自动适应类型
//对于template < typename T, typename ... Args >说 参数表是一个T类型和一个 ...Args类型打包
//对于 void func( T value, Args ... args ) 说 参数表是一个T类型的数据value和一个Args类型打包的数据打包args
//那么进行调用 func( n, m, 'a', str ); 时候, 调用了 void func( T value, Args ... args )
// n对应了value 而m, 'a', str 打包对应了args;
// 输出了value; 然后在进行一次打包 调用func( args ... ); 相当于func( m, 'a', str );
// 然后m对应了value 剩下两个数打包, 继续递归调用 直到打包args里包含0个元素的时候;
// 调用func( args ... ); 相当于无参函数 即调用了 func(); 则调用结束;
#include <iostream>
#include <string>
void func()
{
}
template < typename T, typename ... Args >
void func( T value, Args ... args )
{
std::cout << value << ", ";
func( args ... );
}
int main()
{
int p[] = { 1, 2, 3, 4, 6, 7, 8, 2 };
for( auto point : p ) //从p数组中取出每一个数字 给point 然后输出point;
{
std::cout << point << " "; //auto自动设置point类型
}
std::cout << std::endl;
for( auto &point : p ) //如果类型较大 应该使用引用传递, 提高效率
{
if( point == 4 )
{
point = 2; //修改其中的值 按值传递和引用传递都可以改值
}
std::cout << point << " ";
}
std::cout << std::endl;
int n = 14;
double m = 15.5;
std::string str = "asdf";
func( n, m, 'a', str );
return 0;
}
//auto为自动变量类型设置符 例如 auto p = 1; 则p为int类型; auto自动适应类型
//对于template < typename T, typename ... Args >说 参数表是一个T类型和一个 ...Args类型打包
//对于 void func( T value, Args ... args ) 说 参数表是一个T类型的数据value和一个Args类型打包的数据打包args
//那么进行调用 func( n, m, 'a', str ); 时候, 调用了 void func( T value, Args ... args )
// n对应了value 而m, 'a', str 打包对应了args;
// 输出了value; 然后在进行一次打包 调用func( args ... ); 相当于func( m, 'a', str );
// 然后m对应了value 剩下两个数打包, 继续递归调用 直到打包args里包含0个元素的时候;
// 调用func( args ... ); 相当于无参函数 即调用了 func(); 则调用结束;
#include <iostream>
#include <string>
void func()
{
}
template < typename T, typename ... Args >
void func( T value, Args ... args )
{
std::cout << value << ", ";
func( args ... );
}
int main()
{
int p[] = { 1, 2, 3, 4, 6, 7, 8, 2 };
for( auto point : p ) //从p数组中取出每一个数字 给point 然后输出point;
{
std::cout << point << " "; //auto自动设置point类型
}
std::cout << std::endl;
for( auto &point : p ) //如果类型较大 应该使用引用传递, 提高效率
{
if( point == 4 )
{
point = 2; //修改其中的值 按值传递和引用传递都可以改值
}
std::cout << point << " ";
}
std::cout << std::endl;
int n = 14;
double m = 15.5;
std::string str = "asdf";
func( n, m, 'a', str );
return 0;
}
相关文章推荐
- 黑马程序员——java编程那些事儿____jdk1.5新特性 静态导入、可变参数、高级for循环
- 可变参数和 增强for循环
- 黑马程序员——高新技术--JDK1.5新特性(for循环增强、可变参数、静态导入、自动装拆箱、享元)
- 黑马程序员_java学习日记_Java高新技术静态导入,可变参数和加强的FOR循环
- 黑马程序员_高新技术:1)eclipse的使用技巧_可变参数_增强for循环_基本数据类型的自动拆箱与装箱
- 黑马程序员_可变参数、增强for循环、基本数据类型的自动装箱与拆箱、享元模式
- 黑马程序员-Java的集合类(泛型、可变参数、for-each循环和静态导入)
- Java高新技术【1】 (静态导入-可变参数-增强for循环-基本数据类型的自动拆箱与装箱)
- 静态导入-可变参数-增强for循环-基本数据类型的自动拆箱与装箱
- 【黑马程序员】java1.5新特性-----可变参数,静态导入,高级for循环及享元设计模式
- 黑马程序员--JAVA基础加强之可变参数与增强for循环
- 黑马程序员_高新技术_eclipse的使用技巧_可变参数_增强for循环_基本数据类型的自动拆箱与装箱
- 例题:把一个超市购物的题做成函数。这个题做成函数没有必要,但可以了解输入参数,输出参数,返回值,函数体,还有结构体,ArryList集合,for循环算结果,以及集合里 .count的使用
- 【黑马程序员】张孝祥Java高新技术_静态导入、可变参数、增强for循环
- 20-常用对象API(集合框架-JDK5.0特性-ForEach循环) 21-常用对象API(集合框架-JDK5.0特性-函数可变参数). 1 2
- 增强for与可变参数的函数
- Java基础加强<二>可变参数、增强for循环、基本类型的自动拆箱与装箱、枚举
- 黑马程序员:静态导入、可变参数、增强for循环的介绍
- Java深入(高新技术)(二):开发环境、静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱、享元模式
- java 张孝祥(10) 可变参数与for循环增强