vector.size() 的类型是unsigned long 不是int.
#include <iostream>
#include<vector>
#include <typeinfo>
template <typename T>
bool isequal(std::vector<T> &vec1,std::vector<T> &vec2)
{
if (vec1.size()!= vec2.size())
return false;
else
{
return equal(vec1.begin(),vec1.end(),vec2.begin());//stl equal 其实完全没看懂
}
return true;
}
template <typename T>
void swapnumbers(std::vector <T> &vec,int i,int j)
{
vec[i] = vec[i] + vec[j];
vec[j] = vec[i] - vec [j];
vec[i] = vec[i] - vec[j];
}
template <typename T>
void insertsort(std::vector<T> &vec)
{
//插入排序
if (vec.size()<2)
return;
for (int i = 1; i < vec.size(); ++i) {
for (int j = i; j >0&&vec[j]<vec[j-1] ; --j) {
swapnumbers(vec,j,j-1);
}
}
}
template <typename T>
void generateRandomVector(std::vector<T> &vec , int maxsize,T minvalue , T maxvalue)
{
assert(maxvalue>minvalue); //assert
srand((unsigned int)time(nullptr));
int size = rand()%maxsize-1;
vec=std::vector<T>(size,-1);
for (auto it = vec.begin();it !=vec.end();it++) {
*it = rand()%(maxvalue-minvalue)+1+minvalue;
}
return;
}
template <typename T>
bool array_found_number(std::vector<T> &vec , int num)
{
unsigned long L=0;
unsigned long R=vec.size()-1;
if (num<vec[L]||num>vec[R])
return false;
while((R-L)>1)
{
if (num == vec[(R+L)/2])
return true;
else if (num >vec[(R+L)/2])
L = (R+L)/2;
else
R = (R+L)/2;
}
return false;
}
int main() {
std::vector<int> vec1;
generateRandomVector(vec1,20,0,10);
insertsort(vec1);
if(array_found_number(vec1,5))
std::cout<<"数在数组里"<<std::endl;
else
std::cout<<"数不在数组里"<<std::endl;
for (int i = 0; i < vec1.size(); ++i) {
std::cout<<vec1[i]<<" ";
}
}