将 std::vector 从 BYTE 转换为 int

Converting std::vector from BYTE to int

代码:

using ColumnIndexVector = std::vector<int>;
using ByteVector = std::vector<BYTE>;

void CCreateReportDlg::GetColumnIndexesToExclude()
{
    const CString strSection = theApp.GetActiveScheduleSection(_T("Options"));

    ByteVector vData = theApp.GetProfileVector(strSection, _T("AssignStatesEx"));

    ColumnIndexVector vTemp(vData.begin(), vData.end()); // This converts BYTE to int
    m_vColumnIndexesToExclude = vTemp;

}

有什么方法可以避免 vTemp 的要求,而无需手动迭代 vData 并将 BYTE 转换为 int

是的,只需使用 assign()。 IDK 如果您还需要使用 clear(),但可能不需要。第一次单步调试运行时代码就知道了。

m_vColumnIndexesToExclude.assign(vData.begin(), vData.end());

这是一个测试程序:

#include <windows.h>
#include <iostream>
#include <vector>

using namespace std;
using ColumnIndexVector = std::vector<int>;
using ByteVector = std::vector<BYTE>;

int main(int argc, char* argv[])
{
    cout << "Test" << endl;
    
    ByteVector bytes = {'A', 'B', 'C', 'D'};
    
    ColumnIndexVector colVector;
    
    for ( auto _val: bytes)
    {
        cout << _val << endl;
    }
    
    colVector.assign(bytes.begin(), bytes.end());
    for ( auto _val : colVector)
    {
        cout << _val << endl;
    }
    
    return 0;
}