【C++】LINK类型错误分析记录
2021/6/18 11:28:19
本文主要是介绍【C++】LINK类型错误分析记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
LINK类型错误
情况1:
根据生成路径,查找是否成功生成静态库/动态库,一般在./bin文件中。
情况2:
是否在CMakeLists中target_link_libraries中添加链接静态库操作
情况3:
是都存在类模板,需要实例化,接口函数,这种情况很隐蔽,一般不容易想到。
情况4:
是否需要添加相关的头文件
情况5:
是否添加多余的头文件 ,导致头文件循环引用的问题,这种情况很隐蔽,一般不容易想到。
情况6:
没有成功生成静态库或者静态库,这种情况下查找是否缺少依赖,是否程序缺少头文件,是否是程序写的有问题,不一而论。
C++ STL min_element 使用说明
说明
std::min_element
用于寻找范围 [first, last) 中的最小元素。
前2个参数指定容器的范围,第3个参数是比较函数,为可选参数。
返回值为指向范围 [first, last) 中最小元素的迭代器。
若范围中有多个元素等价于最小元素,则返回指向首个这种元素的迭代器。若范围为空则返回 last 。
关于比较函数, 默认是用 operator< 比较元素, 也可以自定义比较函数。
所以std::min_element
两种函数签名如下:
template< class ForwardIt > constexpr ForwardIt min_element( ForwardIt first, ForwardIt last );
template< class ForwardIt, class Compare > constexpr ForwardIt min_element( ForwardIt first, ForwardIt last, Compare comp );
std::max_element
与std::min_element
类似,只是用于寻找最大的元素。
头文件
#include <algorithm>
例子:求数组里最下的元素
#include <iostream> #include <vector> #include <algorithm> int main(int argc, char **argv) { std::vector<int> v{3, 1, 4, 1, 5, 9}; //auto minElement = std::min_element(v.begin(), v.end()); std::vector<int>::iterator minElement = std::min_element(v.begin(), v.end()); std::cout << "min element: " << *(minElement) << std::endl; std::cout << "min element at:" << std::distance(v.begin(), minElement) << std::endl; return 0; }
结果如下:
min element: 1 min element at:1
例子:自定义比较函数
比如如下自定义比较函数,把求最小指编程求最大值
#include <iostream> #include <vector> #include <algorithm> int main(int argc, char **argv) { std::vector<int> v{3, 1, 4, 1, 5, 9}; auto comp = [](int i, int j){ return i>j;}; // i<j : min; i>j : max std::vector<int>::iterator maxElement = std::min_element(v.begin(), v.end(), comp); std::cout << "max element: " << *(maxElement) << std::endl; std::cout << "max element at:" << std::distance(v.begin(), maxElement) << std::endl; return 0; }
结果如下:
max element: 9 max element at:5
std::min_element 与 std::min 的区别
std::min
一般用于求 a 与 b 的较小者 或者求 initializer_list ilist 中值的最小者。
std::min_element
是求一个范围内的最小者的迭代器。范围可以是全部容器,也可以是容器的一个子区间。
所以它们的适用范围和返回值不一样。
参考
https://zh.cppreference.com/w/cpp/algorithm/min_element
http://www.cplusplus.com/reference/algorithm/min_element/
https://zh.cppreference.com/w/cpp/algorithm/min
这篇关于【C++】LINK类型错误分析记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-07fastcgi 是什么-icode9专业技术文章分享
- 2024-10-07fastcgi 的详细使用教程介绍-icode9专业技术文章分享
- 2024-10-07git如何更新单个文件到本地-icode9专业技术文章分享
- 2024-10-07如何使用ASM(Abstract Syntax Tree Manipulation)技术来修改第三方AAR依赖中的函数-icode9专业技术文章分享
- 2024-10-07Activity 跳转时间耗时很长怎么优化解决-icode9专业技术文章分享
- 2024-10-07Androud Toast 有哪些常用的第三方组件-icode9专业技术文章分享
- 2024-10-07在viewmodel中怎么使用 mmkv?-icode9专业技术文章分享
- 2024-10-07MMKV.defaultMMKV() 是单例模式吗?-icode9专业技术文章分享
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享