gpt4 book ai didi

c++ - valarray 上 STL 算法 "count"的返回类型是什么

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:37 25 4
gpt4 key购买 nike

我正在使用 Visual Studio 2010 ProWindows 7 64bit 上机器,我想使用 count (来自 <algorithm> header )在 valarray 上:

int main()
{

valarray<bool> v(false,10);
for (int i(0);i<10;i+=3)
v[i]=true;

cout << count(&v[0],&v[10],true) << endl;

// how to define the return type of count properly?
// some_type Num=count(&v[0],&v[10],true);
}

上面程序的输出是正确的:

4

但是我想将值分配给变量并使用 int导致编译器警告精度损失。自 valarray没有迭代器,我不知道如何使用 iterartor::difference_type .

这有可能吗?

最佳答案

Num 的正确类型会是:

typename iterator_traits<bool*>::difference_type
Num=count(&v[0],&v[10],true);

原因是,count总是返回:

typename iterator_traits<InputIt>::difference_type

和你的InputIt是指向 bool 的指针:

&v[0];   // is of type bool*
&v[10]; // is of type bool*

对我来说iterator_traits<bool*>::difference_type评估为 long所以你也可以简单地使用:

long Num=count(&v[0],&v[10],true);

但是我不得不承认我没有在 Visual Studio 2010 Pro 下测试它明确地。

关于c++ - valarray 上 STL 算法 "count"的返回类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33593517/

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