[C ++ STL] -pair <vector-iter,int *> - mismatch - no matching function </vector-iter,int *>

时间:2014-08-25 16:22:01

标签: c++ algorithm stl

int nums[] = { 4096,64,55,23,544,23,44,556,75,33,23,23};
    //nums + sizeof(nums)/sizeof(int)
    pair<vector<int>::iterator,int*> pr;
   pr = mismatch (p6store.begin(),p6store.end(),nums); //ERROR HERE
  

C:\ WS8_SRV \ server_aplt \ src \ include \ c ++ \ 3.4.2 \ bits \ stl_pair.h在构造函数`std :: pair&lt; _T1,_T2&gt; :: pair(const std :: pair&lt; _U1,_U2&gt; ;&amp;)[与_U1 = __gnu_cxx :: __ normal_iterator&gt; &gt;,_ U2 = int *,_ T1 = __gnu_cxx :: __ normal_iterator&gt; &gt;,_T2 = int *]':

     

90 C:\ WS8_SRV \ server_aplt \ src \ include \ c ++ \ 3.4.2 \ bits \ stl_pair.h没有用于调用`__gnu_cxx :: __ normal_iterator&gt;的匹配函数&gt; :: __ normal_iterator(const __gnu_cxx :: __ normal_iterator&gt;&gt;&amp;)'

我不知道该代码片段有什么问题

我已经包含了矢量,实用程序和算法。

由于

编辑:完整代码

vector<unsigned long long int> p6store(350);

init_sq_generator(0);
generate(p6store.begin(),p6store.end(),sq_generator);

for_each(p6store.begin(),p6store.end(),print_val);
int nums[] = { 4096,64,55,23,544,23,44,556,75,33,23,23};

1 个答案:

答案 0 :(得分:2)

std::vector<unsigned long long int>std::vector<int>

不同

因此,std::vector<unsigned long long int>::iteratorstd::vector<int>::iterator不同。

你应该使用:

std:pair<std::vector<unsigned long long int>::iterator,int*> pr;

std::pair<decltype(p6store.begin()),int*> pr;

或(最好的):

auto pr = std::mismatch(p6store.begin(), p6store.end(), nums);