是否有一种简单的方法来获取C ++中特定索引之后的向量中的所有项目?

时间:2019-10-23 05:08:06

标签: python c++

我正在编写一个程序,该程序将从python套接字接收命令,然后远程执行它们。起初,我打算在整个项目中使用python,但是我决定使用C ++,因此我可以学习一种新的语言。 在Python中,我有一个类似于以下内容的脚本:

list = ['arg1', 'arg2', 'arg3', 'arg4', 'arg5']
args1 = list[0]
args2 = list[1]
other = ' '.join(list[2:]) # 'arg3 arg4 arg5'

现在,我正在尝试将此代码转换为C ++,但是我还不熟悉该语言。因此,我的问题是:是否有一种简单的方法来获取vector<string>中特定索引之后的所有项目并将它们连接到单个字符串中?

2 个答案:

答案 0 :(得分:4)

您可以将迭代器与数字lib一起使用

#include <numeric>
#include <vector>
#include <iostream>

using namespace std;

int main(int, char**) {
  vector<string> v{"arg1", "arg2", "arg3", "arg4"};
  size_t index = 2;
  string merged = accumulate(v.begin() + index, v.end(), string(""));
  cout << merged; //arg3arg4
}

但是,这不会分隔带有空格的项目。为此,您将不得不添加一些额外的代码

...
accumulate(v.begin() + index, v.end(), string(""), 
           [](string& v, const string& item){
             return v.empty() ? item : v + ' ' + item;
           });

答案 1 :(得分:0)

您可以使用insert来指定要插入的位置以及其他容器的范围。

str2.insert(str2.begin() + idx, str1.begin(), str1.end()