- 主题:问一下这个功能怎么实现
一个关于结构体的数组,不断地往数组里加东西
希望总是能使其按数组里某个成员从小到大排列
vector.push_back,sort这个方法我知道,
想问有没有效率更高的方法来实现这个功能
--
FROM 112.39.105.*
如果你用数组,那插入的时候就肯定是 O(n),
还有个不小的元素移动成本(所以用链表会更合适一点)。
想插入更快,
那可以用搜索二叉树结构,这个结构足够简单,
但是不能保证树平衡。
保证平衡的升级版就是红黑树了。
【 在 gaofei (高飞) 的大作中提到: 】
: 一个关于结构体的数组,不断地往数组里加东西
: 希望总是能使其按数组里某个成员从小到大排列
: vector.push_back,sort这个方法我知道,
: ...................
--
修改:hoodlum FROM 211.95.56.*
FROM 211.95.56.*
定义结构体的operator <
换用std::set
结构体不能重复。要重复,换multiset.
【 在 gaofei 的大作中提到: 】
: 一个关于结构体的数组,不断地往数组里加东西
: 希望总是能使其按数组里某个成员从小到大排列
: vector.push_back,sort这个方法我知道,
: ...................
--
FROM 36.45.53.*
你说的是结构体里的某成员而不是数组的某成员吧?
要说效率,我倒是觉得vector和list、set相比,很难说谁在实际中更快
【 在 gaofei 的大作中提到: 】
:
: 一个关于结构体的数组,不断地往数组里加东西
:
: 希望总是能使其按数组里某个成员从小到大排列
:
#发自zSMTH@Redmi 7
--
FROM 1.152.105.*
vector不是干这个的
换set
【 在 gaofei 的大作中提到: 】
: 一个关于结构体的数组,不断地往数组里加东西
: 希望总是能使其按数组里某个成员从小到大排列
: vector.push_back,sort这个方法我知道,
: ...................
--
FROM 223.104.213.*
用一个map保存结构体,自己实现一个比较函数,用该成员做为key
这样插入的时候就是有序的,需要的时候直接拿
【 在 gaofei 的大作中提到: 】
: 一个关于结构体的数组,不断地往数组里加东西
: 希望总是能使其按数组里某个成员从小到大排列
: vector.push_back,sort这个方法我知道,
: ...................
--
FROM 152.78.0.*
多谢,完美满足我的需求
【 在 DoorWay 的大作中提到: 】
: 定义结构体的operator <
: 换用std::set
: 结构体不能重复。要重复,换multiset.
--
FROM 223.104.175.*
哈不谢。送你关键字 boost::hash_combine,感觉你很快就要用到了,用strcut作为key,存到map里。
我上次就是.先有序,后无序。
【 在 gaofei 的大作中提到: 】
: 多谢,完美满足我的需求
--
FROM 1.80.223.*
【 在 gaofei 的大作中提到: 】
: 一个关于结构体的数组,不断地往数组里加东西
: 希望总是能使其按数组里某个成员从小到大排列
: vector.push_back,sort这个方法我知道,
: ...................
用map
--
FROM 111.193.71.*
std::map,然后定制自己的comparator
【 在 gaofei (高飞) 的大作中提到: 】
: 一个关于结构体的数组,不断地往数组里加东西
: 希望总是能使其按数组里某个成员从小到大排列
: vector.push_back,sort这个方法我知道,
: ...................
--
FROM 114.249.231.*