我有一个std :: vector
素数将来自特定间隔,并通过文件(例如, (32,345)。在某些情况下,间隔可能会重叠,例如(54,434),(345,596)。我希望使用std :: unordered_set,因为这对于我的情况将是最有效的。
我看过带有std :: vector
这是我尝试的代码,灵感来自2d向量的打印方法。
std::vector<std::vector<int> > sharedAnswersVec;
...
...
std::unordered_set<int> unique_primes;
for (auto i = 0; i < sharedAnswerVec.size(); i++)
{
for (auto j = 0; j < sharedAnswerVec[j].size(); j++)
{
unique_primes.insert({ i,j });
sharedAnswerVec.assign(unique_primes.begin(), unique_primes.end());
sort(sharedAnswerVec.begin(), sharedAnswerVec.end());
}
}
sharedAnswerVec不能为std :: vector
我是一个尝试学习的初学者,所以如果您觉得这个问题很傻,请记住这一点。
答案 0 :(得分:0)
您正在尝试将不是std::unordered_set<int>
的内容插入int
中。
我不清楚您的“间隔”是什么,或者排序时您在做什么。也许这有用吗?
#include <iostream>
#include <vector>
#include <set>
int main()
{
std::vector<std::vector<int> > sharedAnswersVec = {
{1,2,3,5,7,11,13,17,19,23,29},
{2,5,11,17,23,29}
};
std::set<int> unique_primes;
for ( const auto& v : sharedAnswersVec )
{
for ( auto i : v )
{
unique_primes.insert(i);
}
}
for ( auto i : unique_primes )
{
std::cout << i << std::endl;
}
return 0;
}