【发布时间】:2019-07-11 19:14:05
【问题描述】:
我有一个包含素数的 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
我是初学者,如果你觉得这个问题很愚蠢,请记住这一点。
【问题讨论】:
-
“我希望消除重复输入”的重复输入是什么?
-
j < sharedAnswerVec[i].size()不是j < sharedAnswerVec[j].size() -
@Caleth 我有一个包含“素数”的 std::vector> >。我希望从重叠间隔中消除“素数”的双重输入。
-
我的意思是
std::vector<int>s 是“质数”,还是ints 是“质数”?如果是ints,您是要从二维std::vector<std::vector<int>>中删除任何重复的ints,还是只从它们直接包含的std::vector<int>中删除? -
@Neil Gatenby 遗憾的是,这个错字不是问题。我得到这个错误代码 Error C2679 binary '=': no operator found which take a right-hand operand of type 'const int' (or there是不可接受的转换)
标签: c++11