获取除第一个元素外的所有元素作为单独的向量

Get all elements but the first as a separate vector

本文关键字:元素 单独 向量 获取 第一个      更新时间:2023-10-16

我正在尝试用c++编写一个基本的命令行程序。虽然代码的其余部分可能也有很多问题,但我现在面临的问题是:我已经将输入行分成了几个部分,但是我不知道如何获得除了第一个部分之外的所有部分,所以我可以将它作为命令的参数列表传递到下一行。

如果这是Ruby,我会这样做,其中parts是命令的空格分隔参数数组:

command = parts[0]
args = parts[1..-1]

,其中parts是空格分隔的位数组。

TL;DR:我怎么能得到vector的第一个元素以外的所有元素?

如果使用另一种类型更容易,请随意说——我认为移植不会有太多麻烦。

我试过使用deque,但我不想修改parts,只是得到它的碎片。我也在这个网站上搜索了一下,但所有出现的问题要么是相关的,但以一种我无法使用的方式解决,要么是一个我宁愿避免的非常粗糙的解决方法,要么是完全不相关的。


<一口>注:我不是using namespace std,但std::是一个痛苦的类型,所以我省略了它在这里。如有需要,请务必在回答中提供。

<一口> P.P.S.

我刚开始学习c++,所以请在回答的同时解释一下。

TL;DR:我怎样才能得到一个向量除了第一个元素以外的所有元素?

如果你想要一个包含它的向量,那么这样做:

std::vector<int> parts = ...;
std::vector<int> args(parts.begin() + 1, parts.end());

如果您只想访问vector元素,则从parts.begin()+1开始直到parts.end()

最习惯的方法是使用迭代器并使函数接受这样的迭代器:

template<typename It>
void func(It begin, It end) { ... }

然后你传递你的向量为

func(begin(vector) + 1, end(vector));