我正在尝试在构造函数中创建const obj = {
key1: {key11: "key11", key12: "key12", key13: {key131: 22}},
key2: {key21: "key21", key22: "key22"},
key3: "key3",
key4: [1,2,3, {key: "value"}]
}
const cloneObj = (obj) =>
{
if (Object(obj) !== obj)
return obj;
else if (Array.isArray(obj))
return obj.map(cloneObj);
return Object.fromEntries(Object.entries(obj).map(
([k,v]) => ([k, cloneObj(v)])
));
}
// Clone the original object.
let newObj = cloneObj(obj);
// Make changes on the original object.
obj.key1.key11 = "TEST";
obj.key3 = "TEST";
obj.key1.key13.key131 = "TEST";
obj.key4[1] = "TEST";
obj.key4[3].key = "TEST";
// Display both objects on the console.
console.log("Original object: ", obj);
console.log("Cloned object: ", newObj);
。我有两个文件,.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
和map
。
以下代码在我的.h
文件中:
.cpp
在我的.h
文件中,我有此代码。
`template <typename T, int numberOfElements>
class DataBase {
public:
DataBase();
void createBins(const MetaData &meta);
void initializeBuckets(const MetaData &meta);
protected:
//Two level indexing.
std::map <T, std::map <T, std::bitset<numberOfElements>*>> two_level_index;
//Single level indexing for insertion.
std::map <T,std::bitset<numberOfElements>*> index;
};
`
当我尝试创建类.cpp
的对象时,如下所示:
template<typename T, int numberOfElements>
DataBase<T,numberOfElements>::DataBase() : index{} {};
template<typename T, int numberOfElements>
void DataBase<T,numberOfElements>::createBins(const MetaData &meta) {
std :: set<std :: string> vec = meta.notNumeric;
std::map < std::string, std::bitset<numberOfElements>*> sr = two_level_index["Class"];
std ::bitset<numberOfElements> *p = sr["Aspen"];
std :: cout << "Printing " << std :: endl;
std :: cout << p->size() << std ::endl;
std::set<std::string>::iterator it = vec.begin();
while (it != vec.end())
{
// Print the element
it++;
}
std :: cout << "Ended" << std ::endl;
}
template<typename T, int numberOfElements>
void DataBase<T,numberOfElements>:: initializeBuckets(const MetaData &meta){
std :: set<std :: string> vec = meta.notNumeric;
std::set<std::string>::iterator it = vec.begin();
while (it != vec.end())
{
Map attributeMap = meta.attributeNameMap;
std :: vector<T> *temp = attributeMap[*it];
for ( auto i = (*temp).begin(); i != (*temp).end(); ++i ){
std::bitset<numberOfElements>* vecs = new std :: bitset<numberOfElements>();
index[*i] = vecs;
two_level_index[*it] = index;
}
it++;
}
}
`
然后我得到一个我不明白的错误。
错误是: