C++ 浮点数组的std::max_元素
我有一个函数,它返回一个float*like,另一个函数返回该数组的长度:C++ 浮点数组的std::max_元素,c++,stl,iterator,C++,Stl,Iterator,我有一个函数,它返回一个float*like,另一个函数返回该数组的长度: float *getTestData() { static float tdata[] = {1.0, 5.0, 10}; return tdata; } unsigned int getTestDataLen() { return 3; } 现在我想用std::max\u元素查找max元素。是否有任何方法可以在运行时而不是在编译时从该数组中获取长度已知的迭代器?我可以使用C++17的任何东
float *getTestData() {
static float tdata[] = {1.0, 5.0, 10};
return tdata;
}
unsigned int getTestDataLen() {
return 3;
}
现在我想用std::max\u元素查找max元素。是否有任何方法可以在运行时而不是在编译时从该数组中获取长度已知的迭代器?我可以使用C++17的任何东西。getTestData的返回只是一个示例。计划是返回任意长度 如果您一直坚持这个设计描述,您可以将
float*
当作迭代器
例如:
#include <algorithm>
#include <iostream>
#include <iterator>
float *getTestData() {
static float tdata[] = {1.0, 5.0, 10};
return tdata;
}
unsigned int getTestDataLen() {
return 3;
}
int main() {
auto begin = getTestData();
auto end = std::next(begin, getTestDataLen());
auto maxit = std::max_element(begin, end);
if(maxit != end) {
std::cout << *maxit << '\n';
}
}
#包括
#包括
#包括
float*getTestData(){
静态浮点tdata[]={1.0,5.0,10};
返回tdata;
}
unsigned int getTestDataLen(){
返回3;
}
int main(){
自动开始=getTestData();
auto end=std::next(begin,getTestDataLen());
自动最大化=标准::最大元素(开始、结束);
如果(最大值!=结束){
std::coutstd::max_元素(tdata,tdata+3)
为什么使用C型数组以及所有指针和大小的废话?为什么不使用/返回一个std::array
或std::vector
?是否允许更改这些古老的函数,或者它们是一成不变的?关键是这些指针来自一个基类,它有多个实现,可能包含相当大的数据集而且不能保证实现包含一个向量,而是一个内存映射文件。我喜欢向量并经常使用它们,但这是一个设计决策,它在实现方面给了我们更多的灵活性。@Gustavo“不能保证实现包含一个向量,而是一个内存映射文件”如果你不知道你得到的是什么,打电话的人该如何正确处理?