得到一个向量的尾巴?

Bab*_*ham 3 c++ vector

我怎么能得到一个向量的尾部:

std::vector<int> Example {1,2,3,4,5};

//head = [1]
//tail = [2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

head = Array[0]
tail = Array[1:]
Run Code Online (Sandbox Code Playgroud)

哈斯克尔

myRecursiveFunction :: [Int] -> [Int]
myRecursiveFunction (x : xs) = x + 1 : myRecursiveFunction xs
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用迭代STL算法,例如accumulate:

std::vector<int> Example {1,2,3,4,5};
std::accumulate(Example.begin() + 1, Example.end(), 0);
Run Code Online (Sandbox Code Playgroud)

然而,这似乎相当冗长,有更简单的解决方案吗?我不介意解决方案复制或查看尾部,我只是在寻找一种方法,可以在不使用迭代器的情况下轻松访问向量的尾部.

pad*_*ddy 5

不要用accumulate.这甚至没有你想要的.只需使用向量构造函数:

std::vector<int>( example.begin() + 1, example.end() );
Run Code Online (Sandbox Code Playgroud)

这将在内存中构建一个新的向量,并从元素1复制到结尾.如果你想要一个实际的标识符:

std::vector<int> example_slice( example.begin() + 1, example.end() );
Run Code Online (Sandbox Code Playgroud)

如果你试图传递这些以进行某种递归过程.你可能想重新考虑一下.也许我们在这里处理XY问题.