【C++\408考研必备】模板函数、内存分配、标准模板

简介: 【C++\408考研必备】模板函数、内存分配、标准模板

二维数组


char【7】【5】

char

合法形参: a【】【5】


char(*c)【5】;

c= new char【n】【5】;


char **x


STL


accumulate用于计算init和[first , last)内部所有元素的总和。需要提供一个init,表示当[first,last)为空的区间仍然可以获取一个明确定义的数值,如果想获得[first,last)内所有数值的总和,应将init设为0

二元操作符不必满足交换律和结合律,是的accumulate的行为顺序有着明确的定义:先将init初始化,然后针对[first,last)区间内的每一个迭代器i,依次执行init = init + *i(第一版本) 或者 init = binary_op(init, *i) (第二版本)


//版本1
template <class InputIterator,class T>
T accumulate(InputIterator first,InputIterator last,T init){
    for(;first != last; ++first){
        init += *first; //将每个元素数值累加到init身上
    }
    return init;
}
//版本2
template <class InputIterator,class T,class BinaryOperation>
T accumulate(InputIterator first,InputIterator last,T init,
             BinaryOperation binary_op){
    for(;first!=last;++first){
        init = binary_op(init, *first);//对每一个元素执行二元操作
    }
    return init;
}
#include <iostream>   //std::cout
#include <functional> //std::minuc
#include <numeric>    //std::accumulate
int my_function(int x,int y){return x + 2*y;}
struct my_class{
    int operator()(int x,int y){
        return x + 3*y;
    }
}my_object;
int main(){
    int init = 100;
    int numbers[] = {10,20,30};
//    std::cout << << std::endl;
    std::cout << "using default accumulate" << std::endl;
    std::cout << std::accumulate(numbers,numbers+3,init) << std::endl;
    std::cout << "using functional's accumulate" << std::endl;
    std::cout << std::accumulate(numbers,numbers+3,init,std::minus<int>()) << std::endl;
    std::cout << "using custom function" << std::endl;
    std::cout << std::accumulate(numbers,numbers+3,init, my_function) << std::endl;
    std::cout << "using custom object" << std::endl;
    std::cout << std::accumulate(numbers,numbers+3,init, my_object) << std::endl;
}
相关文章
|
2月前
|
编译器 C++
【C++】——初识模板
【C++】——初识模板
32 1
【C++】——初识模板
|
8天前
|
编译器 C++
【C++核心】函数的应用和提高详解
这篇文章详细讲解了C++函数的定义、调用、值传递、常见样式、声明、分文件编写以及函数提高的内容,包括函数默认参数、占位参数、重载等高级用法。
13 3
|
21天前
|
存储 Serverless C语言
【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数
本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。
|
4天前
|
存储 算法 程序员
C++ 11新特性之可变参数模板
C++ 11新特性之可变参数模板
11 0
|
2月前
|
编译器 C++ 容器
【C++】String常见函数用法
【C++】String常见函数用法
17 1
|
2月前
|
C++
c++常见函数及技巧
C++编程中的一些常见函数和技巧,包括生成随机数的方法、制表技巧、获取数字的个位、十位、百位数的方法、字符串命名技巧、避免代码修改错误的技巧、暂停和等待用户信号的技巧、清屏命令、以及避免编译错误和逻辑错误的建议。
20 6
|
2月前
|
存储 C++
c++学习笔记05 函数
C++函数使用的详细学习笔记05,包括函数的基本格式、值传递、函数声明、以及如何在不同文件中组织函数代码的示例和技巧。
29 0
c++学习笔记05 函数
|
2月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
32 0
|
2月前
|
并行计算 测试技术 开发工具
【简历模板】c/c++软件工程师
【简历模板】c/c++软件工程师
49 0
|
2月前
|
C语言
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。

热门文章

最新文章

下一篇
无影云桌面