gpt4 book ai didi

C++ vector 迭代器

转载 作者:行者123 更新时间:2023-11-30 04:11:11 24 4
gpt4 key购买 nike

我需要一些帮助来理解 vector rvN

发生了什么

这是我的理解:

rvN 是一个包含数字字符 0001 的 vector 。在函数 Clear() 中,将从 vector 中删除所有前导零。迭代器设置为指向最后一个 vector 元素 (1) 的末尾。

it = 3

*it != 0 (since *it == 1)

rvN.erase(it+1, rvN.end()) ->>> rvN.erase(4,rvN.end()) ?

如何消除所有的零?

for (int i = Number.size() - 1; i >= 0; i--)
{
if (Number[i]<'0' || Number[i]>'9')
break;
else
rvN.push_back(Number[i] - '0');
}
Clear(rvN);
}

void LargeNumber::Clear(vector<char>& rvN)
{
//Eliminate all leading 0s
vector<char>::iterator it = rvN.end();
while (it != rvN.begin())
{
it--;
if (*it != 0)
break;
}
rvN.erase(it + 1, rvN.end());
}

最佳答案

数字是从右到左读的:

for (int i = Number.size() - 1; i >= 0; i--)

如果“Number”包含“1234”,则读取的第一个数字将是最低位的,即“4”。然后按照读取的顺序将它们推送到“rvN”。结果,rvN 将变为

{ 4, 3, 2, 1 }

或者如果 Number 包含 00005

{ 5, 0, 0, 0, 0 }

所以 Clear 只是简单地从右到左工作,直到找到非零,然后修剪数组的后部以仅保留正常表示中最右边的数字 (050 -> 50, 005 -> 5 , 500 -> 500).

关于C++ vector 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20294218/

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