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