C++中的一些用法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++中的一些用法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2032字,纯文字阅读大概需要3分钟。
内容图文
![C++中的一些用法](/upload/InfoBanner/zyjiaocheng/649/efedb9ca029946d1bc23063e2ee3049f.jpg)
C++中的一些东西,平时可能用的少,或者水平有限,没有涉及,这里记录一些用法,以便学习!
1.取vector的子集
vector<int>(vc.begin() + 1, vc.end())
这里是指,取vc.begin()+1到末尾的所有元素,从而形成一个新的vector数组。例如:
![C++中的一些用法 - 文章图片](/upload/getfiles/0001/2021/5/2/20210502125206524.jpg)
![C++中的一些用法 - 文章图片](/upload/getfiles/0001/2021/5/2/20210502125206605.jpg)
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 6 int main() 7 { 8 vector<int> vc; 9 vc.resize(10,0); 10 for (int i = 0; i < 10; i++) { 11 vc[i] = i; 12 } 13 for (int j = 0; j < (vector<int>(vc.begin() + 1, vc.end())).size(); j++) 14 cout << (vector<int>(vc.begin() + 1, vc.end()))[j] << endl; 15 return 0; 16 }View Code
此种用法,在分治或递归思想中用的较多,如下一道题:
654. 最大二叉树
给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:
二叉树的根是数组中的最大元素。
左子树是通过数组中最大值左边部分构造出的最大二叉树。
右子树是通过数组中最大值右边部分构造出的最大二叉树。
通过给定的数组构建最大二叉树,并且输出这个树的根节点。
代码如下:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 private: 12 TreeNode* helper(const vector<int>& nums) 13 { 14 auto it = max_element(nums.begin(), nums.end()); 15 if (it == nums.end()) return nullptr; 16 TreeNode* root = new TreeNode(*it); 17 root->left = helper(vector<int>(nums.begin(), it)); 18 root->right = helper(vector<int>(it + 1, nums.end())); 19 20 return root; 21 } 22 public: 23 TreeNode* constructMaximumBinaryTree(vector<int>& nums) { 24 TreeNode* root = helper(nums); 25 26 return root; 27 } 28 };
思想:
每次找到vector中的最大值,这里用的是max_element()函数,然后递归构建前半个数组,即
vector<int>(nums.begin(), it) 和 后半个数组,即
vector<int>(it + 1, nums.end())
2.STL中的max_element函数
函数功能:指向序列之中数组最大元素,包含在algorithm库中。
函数返回迭代器,时间复杂度O(n)。
函数原型如下所示:
3。。。。。。
内容总结
以上是互联网集市为您收集整理的C++中的一些用法全部内容,希望文章能够帮你解决C++中的一些用法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。