In header file...
public:
struct storeData
{
int iAccountNumber;
int iPin;
double dBalance;
string sFirstName;
string sLastName;
string sMiddleInitial;
};
vector <storeData> storeDataArray;
private:
string sTempArray [7];
string m_sFirstName;
string m_sLastName;
string m_sMiddleInitial;
int m_iAccountNumber;
int m_iPin;
double m_dAmount;
在另一个文件(.cpp)
中m_iAccountNumber = atoi(sTempArray [1] .c_str()); //帐号信息位于索引1中 m_sFirstName = atoi(sTempArray [2] .c_str()); //名字位于索引2中 m_sLastName = atoi(sTempArray [3] .c_str()); //姓氏位于索引3中 m_sMiddleInitial = atoi(sTempArray [4] .c_str()); //中位数位于指数4 m_dAmount = atoi(sTempArray [5] .c_str()); //金额位于索引5中 m_iPin = atoi(sTempArray [6] .c_str()); // pin信息位于索引6中 cout&lt;&lt; “从数组中分配变量后”&lt;&lt; ENDL; // int iAccountFinder = findAccountNumberInStore(m_iAccountNumber); //将数据发送到函数以验证帐号是否存在
int iIndex = 0;
while(!storeDataArray.empty())//index could be 0 if array is empty or find that array is not empty and use loop until empty
{
if(m_iAccountNumber == storeDataArray[iIndex].iAccountNumber)
{
//return error code DU (duplication account number)
}
iIndex ++; //to keep loop until empty index
}
if(m_dAmount <= 0)
{
//return error code BADAMT
}
下面的代码导致程序崩溃。
storeDataArray[iIndex].iAccountNumber = m_iAccountNumber;
storeDataArray[iIndex].sFirstName = m_sFirstName;
storeDataArray[iIndex].sLastName = m_sLastName;
storeDataArray[iIndex].sMiddleInitial = m_sMiddleInitial;
storeDataArray[iIndex].dBalance = m_dAmount;
storeDataArray[iIndex].iPin = m_iPin;
答案 0 :(得分:0)
在C ++中,您应该使用函数来创建要存储在向量条目中的数据:
storeData makeStoreData(int accountNumber, int pin, double balance, const string& fn, const string& ln, const string& mi) {
storeData data;
data.iAccountNumber = accountNumber
data.iPin = pin;
data.dBalance = balance;
data.sFirstName = fn;
data.sLastName = ln;
data.sMiddleInitial = mi;
}
然后使用std::vector::push_back
添加连续元素:
storeDataArray.push_back(makeStoreData(m_iAccountNumber, m_iPin, m_dAmount, m_sFirstName, m_sLastName, m_sMiddleInitial));
您也可以使用std::vector::insert
但请注意以下事实:
通过在元素之前插入新元素来扩展向量 指定的位置,有效地增加了容器的大小 插入的元素数量。
这会导致自动重新分配已分配的存储空间 if - 并且仅当 - 新的矢量大小超过当前矢量 容量。
因为矢量使用数组作为其底层存储,所以插入 在矢量端以外的位置的元素导致容器 将所有位置之后的元素重新定位到新的元素 位置。与此相比,这通常是低效的操作 一个由其他类型的序列执行相同的操作 容器(例如list或forward_list)。