如何将C语言中向量每个第N个元素旋转成一个长尾词?

2026-04-16 19:031阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计377个文字,预计阅读时间需要2分钟。

如何将C语言中向量每个第N个元素旋转成一个长尾词?

我正在尝试实现一个旋转向量中的每个第n个元素。我知道C语言中有一个旋转功能,但我不知道如何应用它来旋转每个第n个元素。例如,对于数组[71, 65, 74, 88, 63, 100, 45, 35, 67, 11],如果n=3,则结果应该是[71, 74, 88, 65, 63, 100, 45, 35, 67, 11]。对于n=2,结果应该是[71, 65, 74, 88, 63, 100, 45, 35, 67, 11]。

我正在尝试旋转向量中的每个第n个元素.我知道c中有一个旋转功能,但我怎么能旋转每个第n个元素?

例如:

([71 65 74 88 63 100 45 35 67 11])-->[65 74 88 71 100 45 35 63 11 67]

对于上面的例子,如果n = 4那么旋转应该在每个第4个元素处发生.

1st-->([71 65 74 88])-->([65 74 88 71]) 2nd-->([63 100 45 35])-->([100 45 35 63]) 3rd-->([67 11])-->([11 67]) 只需使用迭代器从初始向量创建具有指定最大长度的子范围,然后旋转它们中的每一个.

#include <vector> #include <iostream> #include <algorithm> using namespace std; template <class ForwardIterator> void myrotate_nth (ForwardIterator first, ForwardIterator last, typename std::iterator_traits<ForwardIterator>::difference_type n) { while (last - first > n) { ForwardIterator tmp = first + n; rotate(first, first + 1, tmp); first = tmp; } rotate(first, first + 1, last); } int main() { std::vector<int> v = { 71, 65, 74, 88, 63, 100, 45, 35, 67, 11 }; myrotate_nth(v.begin(), v.end(), 4); for_each(v.begin(), v.end(), [](int c) { cout << c << "\t"; }); cout << endl; return 0; }

将输出:

65 74 88 71 100 45 35 63 11 67

如何将C语言中向量每个第N个元素旋转成一个长尾词?

本文共计377个文字,预计阅读时间需要2分钟。

如何将C语言中向量每个第N个元素旋转成一个长尾词?

我正在尝试实现一个旋转向量中的每个第n个元素。我知道C语言中有一个旋转功能,但我不知道如何应用它来旋转每个第n个元素。例如,对于数组[71, 65, 74, 88, 63, 100, 45, 35, 67, 11],如果n=3,则结果应该是[71, 74, 88, 65, 63, 100, 45, 35, 67, 11]。对于n=2,结果应该是[71, 65, 74, 88, 63, 100, 45, 35, 67, 11]。

我正在尝试旋转向量中的每个第n个元素.我知道c中有一个旋转功能,但我怎么能旋转每个第n个元素?

例如:

([71 65 74 88 63 100 45 35 67 11])-->[65 74 88 71 100 45 35 63 11 67]

对于上面的例子,如果n = 4那么旋转应该在每个第4个元素处发生.

1st-->([71 65 74 88])-->([65 74 88 71]) 2nd-->([63 100 45 35])-->([100 45 35 63]) 3rd-->([67 11])-->([11 67]) 只需使用迭代器从初始向量创建具有指定最大长度的子范围,然后旋转它们中的每一个.

#include <vector> #include <iostream> #include <algorithm> using namespace std; template <class ForwardIterator> void myrotate_nth (ForwardIterator first, ForwardIterator last, typename std::iterator_traits<ForwardIterator>::difference_type n) { while (last - first > n) { ForwardIterator tmp = first + n; rotate(first, first + 1, tmp); first = tmp; } rotate(first, first + 1, last); } int main() { std::vector<int> v = { 71, 65, 74, 88, 63, 100, 45, 35, 67, 11 }; myrotate_nth(v.begin(), v.end(), 4); for_each(v.begin(), v.end(), [](int c) { cout << c << "\t"; }); cout << endl; return 0; }

将输出:

65 74 88 71 100 45 35 63 11 67

如何将C语言中向量每个第N个元素旋转成一个长尾词?