[正确就结贴]求教一个关于动态数组的问题
NOW.
首先我的问题来源,
由于我在程序A中使用了TCheckListBox控件,但是我需要保存我这些选择的情况到
注册表和ini文件。。。于是我Public了一下TStringList类,
用过TCLB控件的都知道有Items和Checked两个属性。那Items本身就是TStringList所以,我派生的类很容易就可以接收TCLB控件的数据,但是关于Checked属性,我看了VCL源码也依法找不到头绪,
所以我在我的派生类里,无奈的生成了一个 bool CheckedValues[32767],
OK
我的问题是,如果我想让这个数组动态的话,就是new一下的话,但是我在没有载入数组的情况下是没有办法确定new的大小的,
所以那位高手可以给我一个解决方法,而不用使用定长的数组。或是简单的说一下
TCLB控件的Checked的原理,将不胜感激
[解决办法]
不用定长数组可以用
vector <bool> CheckedValues;
[解决办法]
vector <bool> bVector;
if(TCheckListBox-> Items[i]-> Checked){
bVector.push_back(true);
}else{
bVector.push_back(false);
}
然后就是使用TIniFile写入了:
for(int i = 0 ; i < bVector.size(); i++){
ifi-> WriteString(/**/ bVector[i]);
}
[解决办法]
整理一下huzhangyou的代碼:
#include <vector>
std::vector <bool> bVector;
bVector.resize(TCheckListBox-> Items-> Count); //resize 比逐個 push_back 效率好多了。
for(size_t i = 0 ; i < bVector.size() ; ++i)
bVector[i] = TCheckListBox-> Items[i]-> Checked ;