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};
答案 0 :(得分:2)
std::vector<unsigned long long int>
与std::vector<int>
因此,std::vector<unsigned long long int>::iterator
与std::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);