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

What is the C++ equivalent code of this Python slicing statement?

本文关键字:代码 是什么 C++ Python 切片 语句 这个      更新时间:2023-10-16

我正在尝试将以下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++代码

这:

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());

尽管我怀疑这会是一个很大的优势。。。

最简单的方法是

#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;
}