我只是在访问bool矢量中的元素地址时才收到警告.对于像int这样的其他数据类型的向量,我没有得到任何警告.
例如
vector<bool> boolVect;
boolVect.push_back(false);
if (boolVect.size() > 0) {
cout << &boolVect[0] << endl;
}
Run Code Online (Sandbox Code Playgroud)
我在声明"cout <<&boolVect [0] << endl;"中收到警告"取临时的地址"
有人可以澄清一下吗?
函数(Say"fun()")分配内存并将指针返回到已分配的内存.我应该如何确保释放此内存.我无法在函数"fun()"中立即释放它,因为它返回给调用者.如果fun()是图书馆的一部分怎么办?释放记忆是谁的责任.在fopen()的情况下,内存由fclose()释放.但在我的情况下,反复调用"fun()".所以我不能等到最后释放内存.
我想在C ++中使用Map的向量。我有映射值列表,我想将其存储为向量中的映射。我的要求是这样的:1.对于N列,我有一个值映射。2.我要维护N中每个i的映射。
我试图在向量>中保持此状态。请让我知道如何使其工作。
我正在使用以下代码添加映射
void fun()
{
vector< map < string, int> > myVect;
myVect.push_back(new map< string, int> );
myVect.push_back(new map< string, int> );
map< string, int> entry1 = myVect[0];
entry1["ABC"] = 1;
entry1["DEF"] = 2;
map< string, int> entry2 = myVect[1];
entry1["ABC"] = 5;
entry1["RKD"] = 9;
}
Run Code Online (Sandbox Code Playgroud)
为什么不起作用?
我在下面的代码中得到了第7行的'临时'警告地址
vector<bool> boolVect;
bool x = true;
boolVect.push_back(true);
boolVect.push_back(false);
ofstream fMetaOut("tmp.txt", ios::out);
fMetaOut.write((char* )&x, sizeof(bool));
fMetaOut.write((char* )&boolVect[0], sizeof(bool));
fMetaOut.close();
Run Code Online (Sandbox Code Playgroud)
为什么我在第7行而不是第6行得到这个警告?两者都使用布尔地址.
我怎么能摆脱这个警告?