这个Python切片语句的C ++等效代码是什么?

时间:2014-11-01 20:21:37

标签: c++ code-translation

我正在尝试将以下Python语句翻译为C ++:

some_array = [11, 22, 33, 44]
first, rest = some_array[0], some_array[1:]

到目前为止我所拥有的是:

int array[4] = {11, 22, 33, 44};
vector<int> some_array (array, 4);
int first = some_array.front();
vector<int> rest = some_array;
rest.erase(rest.begin());
  • 如何缩短和/或有效地重写?
  • 这可以在不使用C ++模板和/或向量的情况下编写吗?
  • 是否有在线服务(或软件)将这些非平凡的Python代码片段翻译成人类可读的C ++代码?

2 个答案:

答案 0 :(得分:4)

此:

vector<int> rest = some_array;
rest.erase(rest.begin());

可缩短为:

vector<int> rest(some_array.begin() + 1, some_array.end());

如果您可以使用C ++ 11,则可以将整个代码缩短为:

vector<int> some_array { 11, 22, 33, 44 };
int first = some_array.front();
vector<int> rest (some_array.begin() + 1, some_array.end());

虽然我怀疑这会有多大优势......

答案 1 :(得分:1)

最简单的方法是

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> arr = {11, 22, 33, 44};
    int first = arr[0];
    vector<int> rest;

    for (int i = 1; i < arr.size(); i++) {
        rest.push_back(arr[i]);
    }

    return 0;
}

或者你也可以这样做,

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> arr = {11, 22, 33, 44};
    int first = arr[0];
    vector<int> rest(arr.begin() + 1, arr.end());

    return 0;
}
相关问题