首页 > 其他分享 >0004.容器之vector

0004.容器之vector

时间:2023-03-24 21:14:10浏览次数:38  
标签:0004 容器 cout 降序 vector 升序 include buf

#include<iostream>                                                                                                                                                                                                  
#include<vector>
#include<stdexcept>
#include<string>
#include<cstdlib>//abort()
#include<cstdio>//snprintf();整数转字符
#include<ctime>
#include<algorithm>
#include<array>
#include<string>
using namespace std;

#define NUM 100

int main()
{
    vector<string> c;
    char buf[10];
    clock_t timeStart = clock();

    for (long i = 0; i < NUM; ++i)
    {
        try
        {
            snprintf(buf,10,"%d",rand());
            c.push_back(string(buf));
        }
        catch (exception& p)
        {
            cout << "i=" << i << p.what() << endl;
            abort();
        }
    }
    string target = c[23];

    cout << endl;
    cout << "毫秒: " << (double((clock() - timeStart))/CLOCKS_PER_SEC * 1000 )<< endl;
    cout << "vector.size(): " << c.size() << endl;//
    cout << "vector.front(): " << c.front() << endl;
    cout << "vector.back(): " << c.back() << endl;
    cout << "vector.data(): " << c.data() << endl;
    cout << "vector.cappacity() : " << c.capacity() << endl;
    cout << "tareg: " << target << endl;
    cout << endl;

    cout << "---------普通查找开始---------" << endl;
    timeStart = clock();

    auto iterItem = ::find(c.begin(),c.end(),target);
    cout << "耗时: " << (double((clock() - timeStart))/CLOCKS_PER_SEC * 1000 )<< endl;
    if (iterItem != c.end())//此测试程序必定成功
    {
        cout << "值为: " << *iterItem << endl;
    }
    cout <<"--------普通查找结束----------" << endl;
    cout << endl;

    timeStart = clock();
    cout << "----------排序开始------------" << endl;

    sort(c.begin(),c.end(),[=](string a, string b){
            int i = stoi(a);
            int j = stoi(b);
            return i>j;//降序
            });
#if 0
    for (size_t i = 0; i < c.size(); ++i)
    {
        cout << c[i] << endl;
    }
#endif
    cout << "----------排序结束------------" << endl;

    string* pItem = (string*)bsearch(&target,c.data(),c.size(),sizeof(string),[=](const void* a, const void* b){
            string* stra = (string*)a;
            string* strb = (string*)b;
            int bi = stoi(*stra);
            int bj = stoi(*strb);
            return j-i;
            });

    cout << *pItem << endl;

    return 0;
}

输出如下:

注意:在此测试中,发现升序和降序时,使用bsearch比对函数必须要有所不同,否则无法查找目标值;升序:return bi - bj; 降序: return bj - bi;

标签:0004,容器,cout,降序,vector,升序,include,buf
From: https://www.cnblogs.com/gom-linwei/p/17253336.html

相关文章

  • Hello world、容器使用
    DockerHelloworld#Docker允许你在容器内运行应用程序,使用dockerrun命令来在容器内运行一个应用程序。输出Helloworld[root@docker~]#dockerrunubuntu:15.10......
  • Element UI布局容器中<el-container>的一个问题
    <el-container>:外层容器。当子元素中包含 <el-header> 或 <el- footer> 时,全部子元素会垂直上下排列,否则会水平左右排列。所以需要一个<el-header>或<el-footer>......
  • laravel核心:IoC容器
    参考:https://www.insp.top/content/learn-laravel-container容器,字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你......
  • docker容器安装RabbitMQ
    https://blog.csdn.net/qq_45502336/article/details/118699251?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1......
  • 克隆了一套测试环境和docker容器,在docker build的时候,alpine镜像的apk update一直出现
    【问题描述】网管从开发环境克隆了四台虚拟机及docker容器过来,作为uat环境使用,但是在配置好uat环境的流水线脚本后,每次执行uat分支就报错,其它分支可以正常执行;fetchht......
  • linux系统docker容器部署项目字体问题-Graphics2D在容器里面不显示字
    继上一个博客中生成签章图片后,今日遇到一个问题,本地不管如何改代码,都会将签名文字显示出来。但是...........一旦部署在linux系统后,一直打印不出来,,纠结的呀。。完全......
  • vector的扩容机制实现
    在做C++primer的课后题时,有一道为自己写的类定义拷贝控制操作,之后定义一个vector进行push_back并观察vector的capacity。通过查资料了解到vector当达到扩容要求时,会将所......
  • docker容器进行文件挂载失败的解决方法
    不支持直接挂载文件,会生成与文件同名的目录,导致挂载失败,报错信息如下:docker:Errorresponsefromdaemon:failedtocreateshimtask:OCIruntimecreatefailed:run......
  • 手动创建servlet容器
      ......
  • vector
    1、emplace1)emplace(pos,args):在某个迭代器位置插入(构建)一个新对象std::vector<int>myvector={10,20,30};//->10,100,20,30autoit=myvector.emplace(myvec......