使用C++,希望是标准库,我想按升序对一系列样本进行排序,但我还想记住新样本的原始索引.
例如,我有一个集合,矢量或样本矩阵A : [5, 2, 1, 4, 3]
.我想对这些进行排序 B : [1,2,3,4,5]
,但我也想记住值的原始索引,所以我可以得到另一个集合:
C : [2, 1, 4, 3, 0 ]
- 它对应于'B'中每个元素的索引,在原始'一个'.
例如,在Matlab中你可以这样做:
[a,b]=sort([5, 8, 7])
a = 5 7 8
b = 1 3 2
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到这样做的好方法吗?
我不明白何时应该使用std::move
,何时应该让编译器优化...例如:
using SerialBuffer = vector< unsigned char >;
// let compiler optimize it
SerialBuffer read( size_t size ) const
{
SerialBuffer buffer( size );
read( begin( buffer ), end( buffer ) );
// Return Value Optimization
return buffer;
}
// explicit move
SerialBuffer read( size_t size ) const
{
SerialBuffer buffer( size );
read( begin( buffer ), end( buffer ) );
return move( buffer );
}
Run Code Online (Sandbox Code Playgroud)
我应该使用哪个?