同时检查两个向量内的值的出现

时间:2013-12-12 00:20:22

标签: c++ for-loop vector

我的目标是找出两个向量中存在复数的次数。

wr_den : vector with real part
wi_den : vector with imaginary part
ordem_den[0] : vectors number of elements (in this case is 3)

示例:

wr_den[0] = 1 wi_den[0] = 1
wr_den[1] = 1 wi_den[1] = 1
wr_den[2] = 1 wi_den[2] = 0

结果:

index 0: 2
index 1: 2
index 2: 1

我的代码

for (it = 0; it < ordem_den[0]; it++)
  {
    times  = 0;
    for(contador = 0; contador < ordem_den[0]; contador++)
     {   
      p = wr_den[it];
      x = wr_den[contador];

      y = wi_den[it];
      t = wi_den[contador];
      if ((p == x) && (t == y))
       {
        times++;
       }
     }
       }

1 个答案:

答案 0 :(得分:0)

std::multiset 可能就是这里的事情,假设感知的问题是当前代码的O(n ^ 2)时间。

首先迭代索引位置,将这些数字放入集合中。然后再次迭代,现在检查每个给定索引位置的每个数字的出现次数。

您没有指定使用的数字类型。请注意,非整数浮点值可能无法比较为相等,即使它们在输出上看起来相等。这可能是也可能不是问题。