重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
通常来说,find函数用于寻找某个序列的在string中第一次出现的位置。
茂南ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
find函数有以下四种重载版本:
size_t find (const string str, size_t pos = 0) const noexcept;
size_t find (const char* s, size_t pos = 0) const;
size_t find (const char* s, size_t pos, a href=";tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLP1RLPhRYPW6LnvuBnWnz0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3En163nHD1nWcs" target="_blank" class="baidu-highlight"size_type/a n) const;
size_t find (char c, size_t pos = 0) const noexcept;
参数说明:
str/s/c:要寻找的序列,可以是字符串(版本1),也可以是字符串字面值或者说C风格字符串(版本2、3,在版本3中,所寻找的序列是从s[0]开始的前n个字符),也可以是字符(版本4)。
pos:从string的pos位置开始寻找(注意第一个位置是0)。
函数返回序列第一次出现的位置,如果没有找到则返回string::npos。
这得先 约定 二维 数组 存储 方式
如果 m n 是固定 的 ,即编译时常量 可以 使用 int arr[n][m];来存储 二维 数组 也可以是 int p[m*n];
此时 第 j行 第i列 相对 首指针 偏移 sizeof(int)*(m*j +i)
查找 使用 向套的 for循环 即可
for(int j=0;jn;++j){
for(int i=0;im;++i){
if(p[m*j+i]==num){
*row=j;
*col=i;
return 1;
}
}
}
return 0;
如果 mn 非定值 那么就是 使用 动态 数组 了 如果 使用 new int[n][m] 则 同上
如果 使用 vector vectorint 那么 参数 需要改变
如果 使用 int **parr=new int*[n] ;for(int i=0;in;++n)parr[i]=new int[n];则又是另一种 查找方法
如果 使用 最大行 最大列 的有范围的动态 二维 数组 也需要 另写查找 方法
不同的 存储方式 获得 指定列 行 的元素 的方式 是 不一样 的。
#include stdio.h
#include stdlib.h
#include time.h
#define N 20
void Sort(int a[],int n) {
int i,j,k,t;
for(i = 0; i n - 1; ++i) {
k = i;
for(j = i + 1; j n; ++j) {
if(a[k] a[j]) k = j;
}
if(i != k) {
t = a[k];
a[k] = a[i];
a[i] = t;
}
}
}
int Find(int a[],int n,int x) {
int low = 0,high = n - 1,mid;
while(low = high) {
mid = (low + high)/2;
if(x == a[mid]) return mid;
else if(x a[mid]) low = mid + 1;
else high = mid - 1;
}
return -1;
}
void Show(int a[],int n) {
int i;
for(i = 0; i n; ++i) {
printf("%d ",a[i]);
}
printf("\n");
}
int main() {
int a[20],i,x,res;
srand((unsigned)time(NULL));
for(i = 0; i N; ++i)
a[i] = rand()%N; // 每个数都在1 -- 100之间
Show(a,N);
Sort(a,N);
Show(a,N);
x = rand()%100 + 1;
res = Find(a,N,x);
if(res = 0) printf("数值%d的下标为%d。\n",a[res],res);
else printf("数列中没有找到数值%d。\n",x);
return 0;
}