我有以下两个功能。我使用随机排序的向量执行每个函数大约 200K 次(每个函数获得相同的两个向量,但向量在运行之间会发生变化)。我有点困惑,因为我的代码在所有 200K 迭代中总共运行了大约 500 毫秒,而 STD 函数调用在 440 毫秒内运行。~60ms 去哪儿了?STD 在做什么(或不做什么)我做的不同?
我在核心 i5 上使用 Visual Studio 10。
int getAndIntersectMine(std::vector<int>& resultContainer)
{
    std::vector<int> const& vector0 = getSomeVector();
    std::vector<int> const& vector1 = getAnotherVector();
    const int length0 = vector0.size();
    const int length1 = vector1.size();
    const int* ptr0 = &vector0[0];
    const int* ptr1 = &vector1[0];
    int i0 = 0;
    int i1 = 0;
    int numels = 0;
    while(i0 < length0 && i1 < length1)
    {
      if(ptr0[i0] == ptr1 [i1]) {
        resultContainer[numels++] = ptr0[i0];
        i0++;
        i1++;
      }
      else if (ptr0[i0] > ptr1[i1])
      {
        i1++;
      }
      else
      {
        i0++;
      }
    }
    return numels;
}
int getAndIntersectStds(std::vector<int>& resultContainer)
{
    std::vector<int> const& vector0 = getSomeVector();
    std::vector<int> const& vector1 = getAnotherVector();
    std::vector<int>::iterator last = 
      std::set_intersection(
        vector0.begin(),
        vector0.end(), 
        vector1.begin(), 
        vector1.end(), 
        resultContainer.begin());
    return last - resultContainer.begin();
}