gpt4 book ai didi

C++ 问题解决 - 这是模拟 "tuple"的最佳方法吗?

转载 作者:行者123 更新时间:2023-11-27 22:29:04 25 4
gpt4 key购买 nike

我遇到了以下问题:

“编写一个模板函数 vectorMAXMIN(),它将接受一个 vector 和一个指示 vector 大小的数字,并将返回 vector 的最大值和最小值”...

所以我认为......创建一个类 vector 来避免“大小”传递值并控制插入并可以从中获得最大值和最小值......(不知道这是否是个好主意)

问题是“如何返回元组?”当我读到这个问题时,我想在一个元组中返回“最大值、最小值”是否正确?

代码:

#include <iostream>

template < typename T >
class _tuple
{
public:
T _Max;
T _Min;
};

template < typename T >
class _vector
{
public:
_vector( int cnt = 0);
~_vector();
_tuple< T > get_tuple( void );
void insert( const T );
private:
T *ptr;
int cnt;
int MAX;
};

template < typename T >
_vector< T >::_vector( int N )
{
ptr = new T [N] ;
MAX = N;
cnt = 0;
}

template < typename T >
_tuple<T> _vector< T >::get_tuple( void )
{
_tuple< T > _mytuple;
_mytuple._Max = ptr[0];
_mytuple._Min = ptr[0];
for( int i = 1; i < cnt; i++)
{
if( _mytuple._Max > ptr[i] )
_mytuple._Max = ptr[i];
if( _mytuple._Min < ptr[i] )
_mytuple._Min = ptr[i];
}
return _mytuple;
}

template < typename T >
void _vector< T >::insert( const T element)
{
if( cnt == MAX )
std::cerr << "Error: Out of range!" << std::endl;
else
{
ptr[cnt] = element;
cnt++;
}
}

template < typename T >
_vector< T >::~_vector()
{
delete [] ptr;
}

int main()
{
_vector< int > v;
_tuple < int > t;
v.insert(2);
v.insert(1);
v.insert(5);
v.insert(0);
v.insert(4);
t = v.get_tuple();
std::cout << "MAX:" << t._Max;
std::cout << " MIN:" << t._Min;
return 0;
}

最佳答案

我会使用 std::pair 返回最小值和最大值。

此外,如果您在 C++ 中执行此操作,您可能希望使用 std::vector 实现而不是自行开发的实现并“仅”扫描传入的 std::vector 一次,而不是实现您自己的 vector 。不过,按照问题的阅读方式,您可能希望传入一个数组和数组大小。

关于C++ 问题解决 - 这是模拟 "tuple"的最佳方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5161616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com