首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c++查找vector<float>的argsort

在C++中,argsort是一个用于对数组或向量进行排序并返回排序后索引的函数。然而,C++标准库中并没有直接提供argsort函数。因此,我们需要自己实现一个argsort函数来完成这个功能。

下面是一个示例的C++代码,用于查找vector<float>的argsort:

代码语言:txt
复制
#include <iostream>
#include <vector>
#include <algorithm>

template <typename T>
std::vector<size_t> argsort(const std::vector<T>& v) {
    // 初始化索引向量
    std::vector<size_t> idx(v.size());
    for (size_t i = 0; i < idx.size(); ++i) {
        idx[i] = i;
    }

    // 使用lambda表达式对索引进行排序
    std::sort(idx.begin(), idx.end(),
              [&v](size_t i1, size_t i2) { return v[i1] < v[i2]; });

    return idx;
}

int main() {
    std::vector<float> vec = {3.14, 2.71, 1.41, 1.73, 2.23};

    // 调用argsort函数获取排序后的索引
    std::vector<size_t> sortedIdx = argsort(vec);

    // 输出排序后的索引
    for (size_t i = 0; i < sortedIdx.size(); ++i) {
        std::cout << sortedIdx[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

上述代码中,我们定义了一个模板函数argsort,它接受一个vector作为输入,并返回一个排序后的索引向量。在该函数中,我们首先初始化一个索引向量idx,然后使用lambda表达式对索引进行排序,排序的依据是原始向量v中对应索引的值。最后,我们将排序后的索引向量返回。

对于输入向量{3.14, 2.71, 1.41, 1.73, 2.23},上述代码将输出排序后的索引2 3 4 1 0,表示原始向量中的元素按升序排列后的索引顺序。

在云计算领域中,C++作为一种高性能的编程语言,广泛应用于各种云原生应用、大规模数据处理、高性能计算等场景。腾讯云提供了多种与C++开发相关的产品和服务,例如:

  1. 云服务器 CVM:提供了基于C++开发的云服务器实例,可用于部署和运行C++应用程序。
  2. 云函数 SCF:支持使用C++编写的无服务器函数,可用于实现事件驱动的C++应用程序。
  3. 容器服务 TKE:支持在容器中运行C++应用程序,提供了高可用、弹性伸缩的容器集群管理能力。
  4. 对象存储 COS:提供了可靠、安全、低成本的对象存储服务,适用于存储C++应用程序中的数据和文件。
  5. 数据库 CDB:提供了高性能、可扩展的关系型数据库服务,支持C++应用程序与数据库的交互。

以上是一些腾讯云的产品和服务示例,可以根据具体需求选择适合的产品和服务来支持C++开发和云计算应用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

c++vector以及vector模拟实现

vector介绍及使用 1.vector介绍 https://cplusplus.com/reference/vector/vector/ vector是表示可变大小数组序列容器 就像数组一样,...也就是意味着可以采用下标对vector元素进行访问,和数组一样高效。但是又不像数组,它大小是可以动态改变,而且它大小会被容器自动处理 本质讲,vector使用动态分配数组来存储它元素。...就时间而言,这是一个相对代价高任务,因为每当一个新元素加入到容器时候,vector并不会每次都重新分配大小 vector分配空间策略:vector会分配一些额外空间以适应可能增长,因为存储空间比实际需要存储空间更大.../reference/vector/vector/ vector在实际中非常重要,在实际中我们熟悉常见接口就可以,下面列出了哪些接口是要重点掌握 2.1 vector定义 2.2 vector...> v(a, a + sizeof(a) / sizeof(int)); // 使用find查找3所在位置iterator vector::iterator pos = find(v.begin

4110

c++vector使用

` `2.4vector增删查改` 1.vector简单介绍 vector是表示可变大小数组序列容器 就像数组一样,vector也采用连续存储空间来存储元素。...库中是没有find函数,我们这里使用是算法库中find,其是包含在头文件中 这个函数是非成员函数,被用来在一个序列中查找一个特定值。...这个范围包括指向 first 元素位置直到 last 位置但不包括 last 本身。find 函数在这个范围内查找 val。 val 是要查找值。这个值需要跟序列中元素类型兼容。...find 函数会使用元素类型 operator== 来比较每个元素是否跟 val 相等 find 函数行为是线性搜索;它从 first 索引开始,逐个比较每个元素直到 last 索引之前,查找一个等于...返回值: 如果找到,find 函数返回一个迭代器,指向第一个等于 val 元素 如果在 [first, last) 范围内没有找到 val,则返回 last,表示查找失败 insert std:

13310

C++vector

vector& nums简单用法: 1 一维vector 1.1 创建 vector nums;//不指定长度 vector nums(n);//指定长度为n 1.2...添加元素 nums.push_back(1);//直接从数组末端添加 nums[i] = 1;//直接赋值给第i个位置 注意:直接赋值方法容易导致vector下标越界,产生下标越界访问错误,所以建议使用...预防方法:可以在vector遍历时利用if添加对下标的检测,若出现错误则格外注意对于循环中设定上下界进行输出检查。可以避免对未知内存访问以及更快定位出现错误地方。...{ cout << "vetcor下标越界" << endl; break; } cout << nums[i] << endl; }  1.7 数组排序(附加) 可使用C++sort函数进行排序...:合并vector1和vector2,并将合并后数组赋值给nums vector nums1(m), nums2(n); vector nums; nums.resize(m+n)

20630

C++Vector使用

一、vector介绍 vector文档介绍 1. vector是表示可变大小数组序列容器。 2. 就像数组一样,vector也采用连续存储空间来存储元素。...就时间而言,这是一个相对代价高任务,因为每当一个新元素加入到容器时候,vector并不会每次都重新分配大小。...4. vector分配空间策略:vector会分配一些额外空间以适应可能增长,因为存储空间比实际需要存储空间更大。不同库采用不同策略权衡空间使用和重新分配。...因此,vector占用了更多存储空间,为了获得管理存储空间能力,并且以一种有效方式动态增长。 6....test4() { //有模板时候必须有内置类型默认构造 func(); func(); func(); func(); } 除了指针以外内置类型也可以直接进行默认构造

21410

C++vector基本使用

); v.push_back(4); v.push_back(5); cout << v.size() << endl; cout << v.capacity() << endl; //C+...因为大多数容器都会用到查找接口,也就是find,所以C++直接将这个接口放到算法库里面去了,实现一个函数模板,这个函数实现实际也比较简单,只要遍历一遍迭代器然后返回对应位置迭代器即可,所以这个函数不单独作为某个类成员函数...vector类内swap用于两个对象交换,在swap实现里面再调用stdswap进行内置类型交换,但C++用心良苦,如果你不小心使用格式是std里面的swap格式的话,也没有关系,因为类外面有一个匹配...vectorswap,所以会优先调用类外swap,C++极力不想让你调用算法库swap,就是因为如果交换类型是自定义类型情况下,算法库swap会进行三次深拷贝,代价极大,所以为了极力防止你调用算法库...swap,C++不仅在类内定义了swap,在类外也定义了已经实例化好swap,调用时会优先调用最匹配swap。

84120

C++Vector模拟实现

Vector虽然也支持下标访问,但是很多成员函数都是用迭代器,所以我们要模拟实现的话迭代器十分重要,vs使用是PJ版STL版本,比较难懂,所以我们模拟实现统一用SGI版本去实现,所以在模拟实现之前...二,vector模拟实现 大致框架需要有模板(类外定义)/迭代器以及迭代器获取(public定义,要有可读可写也要有可读不可写)/成员变量(private定义)  并且为了不和库vector...比如这个地方我们传string类迭代器  传vector迭代器  2.1.3 有参构造函数(对n个存储类型去调用他们构造) //有参构造函数(对n个存储类型去调用他们构造) vector(...vector& operator=(vector v) { swap(v);//反正我原来空间也要销毁,我跟你传值过来v直接交换,而且不会改变你 return *this; } 2.1.6...,c11后是支持直接在成员变量那边给缺省值,所以们可以美化一下 全部代码 //无参构造函数 vector() {} //有参构造函数(对n个存储类型去调用他们构造) vector

7310

c++vector用法详解_vector>初始化

大家好,又见面了,我是你们朋友全栈君。 vector()用法 概念 vector 是向量类型,它可以容纳许多类型数据,如若干个整数,所以称其为容器。...vectorC++ STL一个重要成员,使用它时需要包含头文件: #include; 一、vector初始化 (1) vector a(10); //定义了10个整型元素向量...=,>=,,< 三、顺序访问vector几种方式,举例说明如下: (1)向向量a中添加元素 1、利用push_back() vector a; for(int i=0;i<10;i+...刚开始我也犯过这种错误,后来发现,下标只能用于获取已存在元素,而现在a[i]还是空对象 (2)从向量中读取元素 1、通过下标方式读取 int a[6]={ 1,2,3,4,5,6}; vector...()(包括它)到a.end()(不包括它)元素中查找10,若存在返回其在向量中位置 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

1K40

C++ STD::VECTORRESIZE和RESERVE看VECTOR源码实现

/vector/reserve/ 第一步:搞清楚vector数据结构定义 思考60秒:sizeof(vector)大小多少?...与size()已经初始化空间 1. vector 特点 是连续空间 啥意思 提前已经分配好内存了(M_start,_M_end_of_storage)。就能解释下吗2个概念。...很多初学者分不清楚 vector 容器容量(capacity)和大小(size)之间区别,甚至有人认为它们表达是一个意思 混淆地方。...可分配空间是vector之外 思考60秒:vector(10,0) 执行过程 vector(10,0) 执行过程 a 执行_Vector_base构造函数 b 初始化size(10),调用对应构造函数...::reserve Request a change in capacity 第二步 查看 insert函实现 case1-a:对应源代码解析中case1-a情况; case1-b:对应源码剖析中

1.1K10

C++vector模拟实现(SGI版本)

---- ---- 一、四种构造函数 1.vector框架和无参构造 1....下面是SGI版本stl_vector.h源码实现,我们模拟实现就是SGI版本源码。...这里迭代器需要用函数模板来实现,因为构造vector所用迭代器不一定只是vector类型,还有可能是string类型,所以这里迭代器形参需用模板来实现。...4.利用现代写法拷贝构造和赋值重载,无论是vector>这样类型,还是更为复杂vector类型,都可以完成深层次拷贝问题, 下面是我陷入坑,然后想了想又自己跳出来了...在测试接口部分,我们创建了一个vector>类型数组,数组每个元素是vector类型,由10个数字1组成vector,在push_back四次之前

53230

C++vector使用与题目练习

一、前言 学习完string类之后,我们在来学习vector难度并没有之前那么高,更加容易理解一些接口 vector是表示可变大小数组序列容器 ,本质讲,vector使用动态分配数组来存储它元素...同理,对于vector使用,我们也要学会去看文档:vector官方文档 本文重点只介绍一些常用接口 ---- 二、构造函数 构造函数具体介绍直接前往官网查看文档即可,这里只做简单介绍: (constructor...而vector是保存字符动态数组,不会以\0结尾,不保存\0,且vector是T泛型,所以并不存在谁替代谁。...++下: 2.增删查改 vector增删查改 接口说明 push_back 尾插 pop_back 尾删 find 查找。...(注意这个是算法模块实现,不是vector成员接口) insert 在position之前插入val erase 删除position位置数据 swap 交换两个vector数据空间 1.push_back

21120

C++ 数组array与vector比较

1:array 定义时候必须定义数组元素个数;而vector 不需要;且只能包含整型字面值常量,枚举常量或者用常量表达式初始化整型const对象,非const变量以及需要到运行阶段才知道其值const...变量都不能用来定义数组维度. 2:array 定义后空间是固定了,不能改变;而vector 要灵活得多,可再加或减. 3:vector有一系列函数操作,非常方便使用.和vector不同,数组不提供... vs = { "hello","world" }; 21 22 //vector vi(10, 0); //直接初始化 10个为0int...23 //vector vs(2, "hello"); // 2个"hello" string 24 25 /*vector<int...(i); //依次把i值放到vector尾端 29 } //循环结束后vi有100个元素,值从0到99

2.5K80

C++Vector简易模拟与探索

用来标记开始,结束,以及总容量,对于vector来说其迭代器iterator就是T*,例如我们之前学习过顺序表插入是int类型数据,所以对存放int类型vector来说T*就是int* 如下图所示...it = v1.begin();也可以写成这样:int* it = v1.begin();,但是最好还是使用第一个,因为这个是在所有的地方通用,屏蔽了底层实现,体现了C++封装思想 此外范围for...是C++新增一个类型,方便初始化,支持将花括号括起来值给initializer_list,initializer_list对象里面有两个指针,指向花括号里面值开始和结尾下一个,并支持迭代器,所以可以使用范围...,这样上述测试代码就可以测试成功啦 结果如下: 结语 以上就是C++STL标准库中vector模拟实现了,在实现过程中,我们使用了动态内存分配来实现vector大小动态调整,并通过指针来管理内存...通过实现这个简单vector类,我们不仅加深了对vector容器理解,还学习了一些C++底层原理和技巧。

7110

C++ STL学习之【vector使用】

---- 前言 vector 是表示可变大小数组序列 容器,其使用是一块 连续 空间,因为是动态增长数组,所以 vector 在空间不够时会扩容;vector 优点之一是支持 下标的随机访问,缺点也很明显...,头插或中部插入效率很低,这和我们之前学过 顺序表 性质很像,不过在结构设计上,两者是截然不同 ---- 正文 本文介绍vector 部分常用接口 1、默认成员函数 vector 成员变量如上图所示...拷贝构造 和 赋值重载 有 深度拷贝 讲究,在模拟实现 vector 时演示 1.3、析构函数 析构函数,释放动态开辟空间,因为 vector 使用空间是连续,所以释放时直接通过 delete[...等于 _start,就完成了清理,不需要进行缩容,这样做是低效 关于 vector 更多、更详细内容,欢迎移步 《C++ STL学习之【vector模拟实现】》 ---- 6、相关试题 光知道怎么使用是不够...,还需要将知识付诸于实践,切记纸上谈兵 下面是一些比较适合练习使用 vector 试题,可以做做 vector 值得做题目 ---- 总结 以上就是本次关于 STL 之 vector 全部讲解了,

24710

C++初阶-vector使用及模拟

零、前言 本章将学习C++vector类,掌握其使用以及模拟实现 一、什么是vector 介绍: vector是表示可变大小数组序列容器,也采用连续存储空间来存储元素(与string很相似...对象修改操作 vector增删查改 接口说明 push_back(重点) 尾插 pop_back (重点) 尾删 find 查找(算法模块实现,不是vector成员接口) insert 在position...int> v2(a2, a2 + sizeof(a2) / sizeof(int)); // 使用find查找3所在位置iterator vector::iterator pos = find...int> v(a, a + sizeof(a) / sizeof(int)); // 使用find查找3所在位置iterator vector::iterator pos = find(...C++本身提供vector造成命名冲突,我们选择在命名空间里进行实现 实现代码: namespace cole { template class vector

42620

C++】简化源码——vector模拟实现

一、前言 本篇目的很简单,只有一个:模拟实现vector 如何去模拟实现?...模拟实现大概有了一个基本框架,话不多说,直接进入主题 ---- 二、无参构造&析构 对于这两个都是我们熟悉老朋友了 无参构造 初始化全设置为空: vector() :_start(nullptr...是vector呢?所以这里如果T是vector化调用就是vector构造函数。...另外,这里还需要注意一点是:构造vector时候是匿名对象,匿名对象具有常性,不可修改所以要加上const修饰 所以,我们自然而然可以知道,对于内置类型比如int,都是有构造函数: reserve...()了 使用memcpy问题 memcpy拷贝数据,拿vector作为例子,其中vector仍然是浅拷贝,对于自定义类型出现问题 vector> vv; vector

15130
领券