use*_*451 4 c++ arrays element
我是C++的新手,我正在尝试使用切片列表在python中做一件简单的事情,但我找不到一个简单的方法在c ++中这样做.
我需要重新排序一个数组,从一个给定的元素开始,如:int array [] = {1,2,3,4,5}; 重新排序的数组从元素3开始:{3,4,5,1,2}
这是我发现这样做的方式,但似乎有点矫枉过正:
void Graph::reorder(int x, MIntArray ¤tArray)
{
MIntArray reorderedIndices;
int index;
for (unsigned int i=0; i<currentArray.length();i++){if(currentArray[i]==x){index=i;}} // get the index
for (unsigned int i=index; i<currentArray.length();i++){reorderedIndices.append(currentArray[i]);} // zero to index
for (unsigned int i=0; i<index;i++){reorderedIndices.append(currentArray[i]);} // index to last
for (unsigned int i=0; i<currentArray.length();i++){currentArray.set(reorderedIndices[i],i);} // transfer
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激!!
谢谢
路易斯
使用std::rotate方法执行此重新排序.提供数组的开头作为第一个参数,数组的结尾(即array+length)作为最后一个参数,"中点"作为第二个参数.中点定义要移动到初始位置的元素的索引.
int x[] = {1,2,3,4,5};
rotate(x, x+2, x+5);
for (int i = 0 ; i != 5 ; i++)
cout << x[i] << " ";
cout << endl;
Run Code Online (Sandbox Code Playgroud)
这打印 3 4 5 1 2
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |