gpt4 book ai didi

c++ - vector 中唯一元素的数量

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:01 24 4
gpt4 key购买 nike

如果我有一个浮点 vector {1.2,1.2,1.2,1.3,1.4} 并且我必须找出唯一元素的数量,我该怎么做?

我是 C++ 的新手,我真的不知道如何使用迭代器。谢谢!

编辑:我做了这样的事情:

sort(arra.begin(),arra.end());
vector <float>::iterator it = arra.begin();
while ( it != arra.end() )
{
temp1 = *it;
cout<<temp1<<"\n";
it++;
while (*it == temp1)
{
it++;
cout<<*it<<"\n";
}
count++;
}

但这给出了一个 WA。

最佳答案

方法之一如下

#include <iostream>
#include <vector>
#include <set>

int main()
{
std::vector<double> v = { 1.2, 1.2, 1.2, 1.3, 1.4 };

std::cout << "Number of unique elements is "
<< std::set<double>( v.begin(), v.end() ).size()
<< std::endl;

return 0;
}

输出是

Number of unique elements is 3

如果 vector 已经排序并且不为空你可以使用下面的方法

#include <iostream>
#include <vector>
#include <numeric>
#include <iterator>
#include <functional>

int main()
{
std::vector<double> v = { 1.2, 1.2, 1.2, 1.3, 1.4 };

auto n = 1 + std::inner_product( std::next( v.begin() ), v.end(),
v.begin(), size_t( 0 ),
std::plus<size_t>(),
std::not_equal_to<double>() );

std::cout << "Number of unique elements is " << n << std::endl;

return 0;
}

或者直截了当的方法

#include <iostream>
#include <vector>

int main()
{
std::vector<double> v = { 1.2, 1.2, 1.2, 1.3, 1.4 };

size_t n = 0;

if ( v.begin() != v.end() )
{
++n;
for ( auto current = v.begin(), prev = v.begin();
++current != v.end(); ++prev )
{
if ( !( *prev < *current ) && !( *current < *prev ) ) ++n;
}
}

std::cout << "Number of unique elements is " << n << std::endl;

return 0;
}

关于c++ - vector 中唯一元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29321127/

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