c++vector查找的简单介绍
本篇文章给大家谈谈c++vector查找,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、c语言排序和查找?
- 2、vector如何实现快速查找
- 3、C++中,vector参数为类型时,如何查找和添加元素?
- 4、关于vector创建的二维数组
- 5、c++ vector find 如何查找啊?语法是怎么写的?
c语言排序和查找?
1)利用readData()函数从data1.txt中读入不同规模的数据存入数组,
编写基于数组的顺序查找算法,测试数据量为1万、5万、10万、20万、
30万、40万和50万时的数据查询时间。
算法代码如下:

1 int seqsearch(int a[],int n,int key)
2 {
3 int k=n-1;
4 while(k=0a[k]!=key)
5 k--;
6 return (k);
7 }

2)利用readData()函数从data2.txt中咐腔读入不同规模的有序数据存入数组,
编写基于数组的二分查找算法,测试数据量为1万、5万、10万、20万、30万、轿简余
40万和50万时的数据查询时间。
算法代码如下:

1 int binSearch(int a[],int n,int key)
2 {
3 int low=0;
4 int high=n-1;
5 int mid;
6 while(low=high)
7 {
8 mid=(low+high)/2;
9 if(a[mid]==key) return mid;
10 if(a[mid]key)
11 high=mid-1;
12 else
13 low=mid+1;
14 }
15 return -1;
16 }

3)请设计冒泡排序算法函数void bubbleSort(int a[],int n),对a[1]..a[n]进行升序排序。
并测试在不同数据规模下的排序闭滚效率。
算法代码如下:

1 void bubbleSort(int a[],int n)
2 {
3 int i=1,j,flag=1;
4 while(i=n-1flag)
5 {
6 flag=0;
7 for(j=1;j=n-1-i;j++)
8 if(a[j+1]a[j])
9 {
10 a[0]=a[j];
11 a[j]=a[j+1];
12 a[j+1]=a[0];
13 flag=1;
14 }
15 i++;
16 }
17 }

vector如何实现快速查找
数据结构如下:C/C++ code string username, string userotherinfo}; vectorUserinfo userList; 现在的问题是,希望在一个这样的vector里面,根据输入条件进行快速查找元素 条件可能是userid或者username或者userotherinfo中任意一个 (例如查找username为xxx的元素,结果可能有多个凯嫌) 并且userotherinfo查找时经常是匹配前几个字符盯租手的查找(类似数据库like,例型谨如 userotherinfo like 'XX%') ----------------------------------------------- ------解决方案-------------------- 那就别用vector啊,map或者set是红黑树,查找log n ------解决方案-------------------- 最快的就是哈希查找 不过建哈希表有点麻烦 ------解决方案-------------------- 如果目的是直接查找的话,不如用关联容器啊。还有个建议就是直接用sqlite的memory database,用法和phisical database完全一样,唯一不同是建立在内存里,操作效率相当高,我处理大数据一直都这么干。 用三个vector来保存他的迭代器吧。然后分别按照三个成员对三个vector进行排序,最后是用二分查找来查。复杂度log(n)
[img]C++中,vector参数为类型时,如何查找和添加元素?
用stl的算法find_if,functor做谓词,感觉更简练一些
#include iostream谨备运
#include string
#include vector祥梁
using namespace std;
struct Table {
Table(const int n, const string s, const int c):NUM(n),CI(s),count(c){}
int NUM;
string CI;
int count;
};
class TheTable {
int NUM;
public:
TheTable(int i):NUM(i) {}
bool operator()(Table t) {
return t.NUM == NUM;
}
};
int main () {
std::vectorTable myvector;
Table t0(1, "hello", 2), t1(2, "world", 3);
myvector.push_back(t0);
myvector.push_back(t1);
for (int i=0; i3; ++i) {
vectorTable::iterator it = find_if(myvector.begin(), myvector.end(), TheTable(i));
if (it == myvector.end())
cout "滚蚂Not found" endl;
else {
std::cout "MyTable " (*it).CI '\n';
++(*it).count;
}
}
return 0;
}
关于vector创建的二维数组
二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:
LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t
按“列优先顺序”存储时,地址计算为:
LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t
存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节
二维数组又称为余陵码矩阵,行列数相等的矩阵称变汪隐方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素.
转置矩阵
//其中A, B是m*n矩阵:
void tramat(matrix A,matrix B){ int i,j;
for(i=0; im; i++)
for(j=0;jn;j++)
B[j]=A[j];
}
矩阵相加
//其中A,B,C是m*n矩阵:
void addmat(matrix C, matrix A, matrix B){
int i, j;
for(i=0; im; i++)
for(j=0;jn;j++)
c[j] = A[j] + B[j];
}
矩阵相乘
//其中A是m*n矩阵,B是n*1矩阵,C为m*1矩阵
void mutmat(matrix C, matrix A, matrix B){
int i, j, k;
for(i=0; im; i++)
for(j=0; ji; j++){
C[j]=0;
for(k=0; kn; k++)
C[j] = C[j] + A[k] * B[k][j];
}
}
C++动态二维数组:
以整形为例,row为行数,col为列数
int **data;//存储二维数组的指针(指向指针的指针。date=x[0][0]的地址。这样标会更好。因为sizeof(date)结果竖哪为4不可能存下二维数组)
//以下实现如何申请内存
data = new int *[row];
for (int k = 0; k row; k++)
{
data[k] = new int[col];
}
//赋值跟普通二维数组一样 例如
data[0][0] = 5; //将二维数组1行1列(C++中称为0行0列)赋值为5
//删除内存
for (int i = 0 ; i row; ++i)
{
delete [] data[i]; //此处的[]不可省略
}
delete [] data;
c++ vector find 如何查找啊?语法是怎么写的?
如下参考:
1. 首先,打开如图中红色方框所示的软件,构造一个整型向量向量。答消
2.如图所示,向量的唯举旁大小为0。
3.如红色方框所示,将vector元素的值修改为6个元素的值为20的向量。
4.计算结果表明,该算法成功地构造出了含有6个元素的向量。
5.如图所示,将现有vector对象的范围用作构造函数参数,并将该对象复制到另一个vector对象。
6.如图所指橡示,程序运行结果确实显示为420。
关于c++vector查找和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。