這個問題的正確答案是D,但是我很困惑的是什麼時候在類dunno中的add操作發生的確切時間?數字如何被添加?關於函子的問題
考慮以下部分的C++代碼:
#include <vector>
#include <iostream>
using namespace std;
template<class Iter, class Formatter>
void mystery(Iter front, Iter end, Formatter doSomething)
{
while (front != end)
{
doSomething(*front, *end):
front++; end--;
}
}
template <class T> class dunno
{
public:
void operator()(T & a, T & b)
{
a = a + b;
}
}
int main()
{
vector<int> v; ... // insert an odd number of elements into the vector
vector<int>::iterator it1 - v.begin();
vector<int>::iterator it2 - v.end();
it2--;
dunno<int> d;
mystery<vector<int>::iterator, dunno<int> >(itl, it2, d);
for (int i = 0; i < v.size(); i++) cout << v[i] << endl;
return 0;
}
如果你認爲所有的迭代器是雙向的,並且不恆定,下列哪項是正確的? (a)由於神祕參數列表中的類型不匹配,此代碼不能編譯。 (b)由於模板實例化中的語法錯誤,此代碼不能編譯爲神祕。 (c)如果矢量由整數1,2,3,4,5,6,7按順序組成,第一個項目在左邊,則輸出爲1,2,3,4,5,6,7,7,8,9, (dod不改變矢量)
(d)如果矢量由整數1,2,3,4,5,6,7以該順序組成,則與在左邊的第一項,則輸出是8,8,8,5,6,7。
(e)這些選項都不描述此代碼的行爲。