gpt4 book ai didi

c++ - std::vector - decltype 的有效用法?

转载 作者:搜寻专家 更新时间:2023-10-31 00:30:36 25 4
gpt4 key购买 nike

这是我第一次使用decltype,我不太确定我是否正确使用它。该代码确实编译并且似乎适用于像 char 和 int 这样的 POD。

但是,我想知道我是否会遇到更复杂的数据类型的任何问题 - 其他人警告我,像 auto 和 decltype 这样的东西很快就会得到意想不到的结果。

我的假设是此模板适用于任何定义了运算符!= 的类型 T。是否有任何我应该关注的边缘案例?

#include <forward_list>
#include <iostream>
#include <cstdlib>
#include <vector>

template<typename T>
bool isPalindrome(const std::forward_list<T>& lf)
{
auto iter = lf.begin();
std::vector<decltype(iter)> bv; // <-- Correct usage?

while(iter!= lf.end())
{ bv.push_back(iter++); }

int istop = bv.size()/2 + bv.size()%2;
iter = lf.begin();

for(int i = bv.size()-1; i>=istop; i--, iter++)
{ if( *iter != *(bv[i])) return false; }
return true;
}

int main(int argc, char* argv[])
{
std::forward_list<int> list = {0,1,2,1,0};
std::cout << "Is palindrome: " << isPalindrome(list) << std::endl;
return 1;
}

最佳答案

是的,那个用法没有问题。您将使用 std::forward_list::iteratorstd::vector,并且由于这些迭代器满足容器要求,您可以开始了。

关于c++ - std::vector<decltype(iter)> - decltype 的有效用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36360247/

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