【发布时间】:2013-12-16 03:35:20
【问题描述】:
我需要一些帮助来了解向量 rvN 发生了什么
这是我的理解:
rvN 是一个包含数字字符 0001 的向量。
在函数Clear() 中,所有前导零都将从向量中删除。迭代器设置为指向最后一个向量元素 (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());
}
【问题讨论】:
-
向量似乎是颠倒的,因此最不重要的值存储在“开始”端。例如。 1234 存储为 { 4, 3, 2, 1 }。大概是“逆向量数”
-
你看到这段代码工作了吗?描述 it=3 的代码前的块是什么?