【发布时间】:2013-12-08 11:38:54
【问题描述】:
在下面的代码中,我使用 auto 定义了一个与所使用的迭代器兼容的新变量“temp”。我只是好奇我是否可以在不使用 auto 关键字的情况下做同样的事情??
换句话说,我不知道容器是什么。那么如何在不破坏代码通用性的情况下定义临时变量呢。
作为 C++ 的新手,我一直使用 SO 作为解决任何问题的网站。我一直在寻找类似的问题,但我没有找到任何问题。任何帮助将不胜感激!
/* InsertionSort.c */
#include<iostream>
#include <typeinfo>
namespace sort {
template <class RandomAccessIterator, class Compare >
void InsertionSort(RandomAccessIterator begin, RandomAccessIterator end, Compare comp) {
RandomAccessIterator itrOuter,itrInner,itrShift;
for(itrOuter = begin+1; itrOuter!=(end); itrOuter++) {
// ***************HERE***********************************************
auto temp= *itrOuter;
for(itrInner=begin;itrInner<itrOuter;itrInner++) {
if(!comp(*itrInner,*itrOuter)) {
for(itrShift=itrOuter;itrShift> itrInner;itrShift--)
*itrShift=*(itrShift -1);
*itrInner=temp;
break;
}
}
}
}
}
bool Compa(int& x, int& y) {return (x<y);}
int main(void) {
using namespace sort;
int arr[] = {3,5,1,7,2,6,9,12};
InsertionSort(arr, arr+8, Compa );
for(int i=0;i < 8;i++)
std::cout<<arr[i]<<" ";
return 0;
}
【问题讨论】: