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

时间:2015-09-30 20:42:09

标签: c++ c++11 vector

我试图用C ++编写基本的命令行程序。虽然代码的其余部分也可能存在问题,但我现在面临的问题是:我将输入的行分成几部分,但我无法弄清楚如何获得所有代码但第一个,所以我可以将它作为命令的参数列表传递给它。

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

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

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

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

如果使用其他类型更容易,请随意说 - 我不认为我 很难将其移植过来。

我已尝试使用deque,但我不想修改parts,只是获取部分内容。我也在这个网站上搜索过,但所有出现的问题要么是相关的,要么以我无法使用的方式解决,开始我真的很讨厌的解决方法,我宁愿避免,或完全无关。

P.S。我不是using namespace std,但是std::很难输入,所以我在这里省略了它。如果适用,请在答案中提供。

P.P.S。我只是(重新)从C ++开始,所以请提供解释和答案。

2 个答案:

答案 0 :(得分:9)

  

TL; DR:除了矢量的第一个元素外,我怎样才能获得所有元素?

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

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

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

答案 1 :(得分:4)

最常用的方法是使用迭代器并让你的函数接受这样的迭代器:

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

然后你将你的矢量传递给:

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