在编写代码时,遇到

在原来的代码中出现这个问题



原来的代码:

//3  计算排序时间
template<typename T>
void testSort(string sortName, void(* sort) (T [],int ),T arr[],int n){
clock_t startTime = clock();
sort(arr,n);
clock_t endTime = clock(); assert(isSort(arr,n));
cout<<sortName<<":"<<double(endTime-startTime) / CLOCKS_PER_SEC<<"s"<<endl;
return;
} // 4 判断是否是已排序的
template <typename T>
bool isSort(T arr[],int n){
for (int i = 0;i<n-1;i++){
if (arr[i] > arr[i+1]){
return false;
}
}
return true;
}

上面的代码死活不出来,但是两个调换顺序之后就可以了,详情见下面这个博客 ,但是博客中描述的是,在遇到普通函数时,需要把申明调用的函数先实例化,但模板函数不用,而这边本身就是模板函数,所以还是存在一点疑惑

prog.cpp: In instantiation of ‘void foo(T) [with T = int]’:

prog.cpp:16:7: required from here

prog.cpp:6:10: error: ‘bar’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

bar(x); // OKAY

^

prog.cpp:10:6: note: ‘template void bar(T)’ declared here, later in the translation unit

void bar(T x)

在gcc 4.8中看到的那样,它实际上并没有编译。编写 template 扩展器时,编译器在早期做的一件事就是将它们视为类似于宏的东西。当它们声明时,几乎不会做任何事情,而在实例化它们时,将查找所有内容。当 template 被声明,实例化时更少。

https://www.it1352.com/2094010.html

    //    4   判断是否是已排序的
template <typename T>
bool isSort(T arr[],int n){
for (int i = 0;i<n-1;i++){
if (arr[i] > arr[i+1]){
return false;
}
}
return true;
} //3 计算排序时间
template<typename T>
void testSort(string sortName, void(* sort) (T [],int ),T arr[],int n){
clock_t startTime = clock();
sort(arr,n);
clock_t endTime = clock(); assert(isSort(arr,n));
cout<<sortName<<":"<<double(endTime-startTime) / CLOCKS_PER_SEC<<"s"<<endl;
return;
}

最新文章

  1. 看了汤姆大叔的“你真懂JavaScript吗?”的一些感慨
  2. pl/sql developer中的SQL语句
  3. 关于git提交的自己的理解
  4. asp.net中两款文本编辑器NicEdit和Kindeditor
  5. Camel In Action 阅读笔记 第一章 认识Camel 1.1 Camel 介绍
  6. UVa 11774 (置换 找规律) Doom&#39;s Day
  7. Leetcode:Swap Nodes in Pairs 单链表相邻两节点逆置
  8. kendo ui grid 汉化
  9. Linux使用top与free命令查看CPU与内存使用情况
  10. Ng第八课:神经网络表述(Neural Networks: Representation)
  11. 一卡通大冒险(hdu2512)
  12. Java NIO 的前生今世 之四 NIO Selector 详解
  13. Flex报错Error #2048: 安全沙箱冲突
  14. activiti 数据表设计
  15. java使用Redis1--安装与简单使用
  16. H3C路由器和交换机的一些记录
  17. 【转】伪O2O已死?2016年实体零售将迎来真正的O2O
  18. HDU 6035 Colorful Tree(补集思想+树形DP)
  19. Perl 变量:标量变量、数组变量、哈希变量和变量上下文
  20. Raspberry Pi开发之旅-WIFI遥控小车

热门文章

  1. Codeforces Round #427 (Div. 2) E. The penguin&#39;s game (交互题,二进制分组)
  2. deployer服务器端的配置
  3. ECMAScript 6 入门 - 阮一峰
  4. cookie和webstorage
  5. JUC---13各种锁
  6. 【总结】git
  7. JS中this的指向性问题
  8. 快进来!花几分钟看一下 ReentrantReadWriteLock 的原理!
  9. 分布式文档存储数据库之MongoDB基础入门
  10. vue踩坑