我用下面的代碼來說明我的問題:的std ::對,自動替換在Visual Studio 2010
using namespace std;
int main()
{
int abc[8]={3, 1, 4, 1, 5, 9, 2, 6};
std::vector<int> v(abc,abc+8);
;
std::pair<int,int> v2(std::minmax_element(v.begin(),v.end()));
std::cout << '\n';
}
如果我編譯上面的代碼,我將與Visual Studio中的下列編譯錯誤:
Error 2 error C2439: 'std::_Pair_base<_Ty1,_Ty2>::first' : member could not be initialized C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility 163
Error 4 error C2439: 'std::_Pair_base<_Ty1,_Ty2>::second' : member could not be initialized C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility 163
Error 1 error C2440: 'initializing' : cannot convert from 'std::_Vector_iterator<_Myvec>' to 'int' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility 163
Error 3 error C2440: 'initializing' : cannot convert from 'std::_Vector_iterator<_Myvec>' to 'int' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility 163
編譯錯誤會即消失,如果我使用自動關鍵字:
auto v2 = std::minmax_element(v.begin(),v.end());
然後在這裏爲m y問題:如何正確使用std::pair<int,int>
替代auto
關鍵字?
我不知道VS 2010,但在VS 2012中,如果我在'auto'聲明中將鼠標懸停在v2上,它在工具提示中顯示實際的類型(這不是一對'int',就像你在答案中看到的那樣) – grek40