我怎么能得到一个向量的尾部:
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)
然而,这似乎相当冗长,有更简单的解决方案吗?我不介意解决方案复制或查看尾部,我只是在寻找一种方法,可以在不使用迭代器的情况下轻松访问向量的尾部.
不要用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问题.