gpt4 book ai didi

c++ - 从 vector 主数组创建子数组的困惑

转载 作者:行者123 更新时间:2023-11-27 23:53:44 24 4
gpt4 key购买 nike

所以我正在某处查看已发布的代码:

public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.size() == 0) return NULL;
int mid=nums.size()/2;

TreeNode* root = new TreeNode(nums[mid]);
auto it=nums.begin()+1;
cout<<*it;

vector<int> left(nums.begin(),nums.begin()+mid);
vector<int> right(nums.begin()+mid+1,nums.end());
root->left=sortedArrayToBST(left);
root->right=sortedArrayToBST(right);

return root;
}

让样本输入为[1,2,3,4]

所以当我打印迭代器时,它给我的答案是 3

此外,但是在创建子数组时,创建的子数组由元素 [1,2] 组成。我在这里感到困惑,子数组不应该是 [1,2,3] 因为 nums.begin()+ 中间会指向元素 3?我想我有一个非常基本和天真的怀疑,有人能解决这个问题吗谢谢

最佳答案

C++ 通常使用这样一种系统,其中“开始”迭代器 指向要包含在结果中的第一项,但“结束”迭代器指向要包含在结果中的最后一项。

现在还有一个小问题:您真的想要使用类似vector_view(又名array_view,又名span),它提供了对现有数据的类似 vector 的访问,而不是复制它——照原样,它会比任何实际需要慢得多)。如果您没有可用的,您可以自己实现一个,或者只传递一个指针/迭代器和一个长度。

关于c++ - 从 vector 主数组创建子数组的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44253191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com