Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;向量迭代器_C++_Vector - Fatal编程技术网

C++ C++;向量迭代器

C++ C++;向量迭代器,c++,vector,C++,Vector,我需要一些帮助来理解向量rvN 这是我的理解: rvN是包含数字字符0001的向量。 在函数Clear()中,所有前导零都将从向量中删除。迭代器设置为指向最后一个向量元素(1)的末尾 如何消除所有的零 for (int i = Number.size() - 1; i >= 0; i--) { if (Number[i]<'0' || Number[i]>'9') break; else r

我需要一些帮助来理解向量
rvN

这是我的理解:

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

如何消除所有的零

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--)
{
if(编号[i]'9')
打破
其他的
rvN.推回(编号[i]-“0”);
}
清除(rvN);
}
void LargeNumber::Clear(向量和rvN)
{
//消除所有前导0
向量::迭代器it=rvN.end();
while(it!=rvN.begin())
{
它--;
如果(*it!=0)
打破
}
rvN.erase(it+1,rvN.end());
}

从右到左读取数字:

for (int i = Number.size() - 1; i >= 0; i--)
如果“数字”包含“1234”,则读取的第一个数字的有效性最低,即“4”。然后按读取顺序将其推送到“rvN”上。因此,rvN将成为

{ 4, 3, 2, 1 }
或者如果数字包含00005

{ 5, 0, 0, 0, 0 }

So Clear只是从右向左工作,直到找到一个非零,然后修剪数组的背面,以便在正常表示(050->50005->5500->500->500)中只保留最右边的数字。

向量看起来是反向的,因此最低有效值存储在“开始”端。例如,1234存储为{4,3,2,1}。大概,“反向向量数”你看到这段代码了吗?代码前面的代码块是什么,其中代码=3?数字是1000。因此,如果颠倒,它将是0001。如果它是从右向左工作的,那么如何删除1之前的零?因为它先到达1,然后跳出while循环。我有点困惑。@Justin他们没有。这就是重点。如果数字为
“1000”
,则零是有效的。如果数字为
“0001”
则反转为
1000
,则循环将迭代四次,保持最后一次测试,从而返回
1
。唯一能让
0001
成为
rvN
的方法是,如果原始数据是
“1000”
。请稍微编辑我答案的最后一行。
{ 5, 0, 0, 0, 0 }