C++ 为什么C++;在小牛和山狮身上,物体的地图有所不同
我有一个问题可以归结为以下几点: <>我有一个C++结构,其中包含向量C++ 为什么C++;在小牛和山狮身上,物体的地图有所不同,c++,macos,lldb,C++,Macos,Lldb,我有一个问题可以归结为以下几点: 我有一个C++结构,其中包含向量 struct Structure{ std::vector<int> c; Structure(); Structure(std::vector<int> c_init);
struct Structure{
std::vector<int> c;
Structure();
Structure(std::vector<int> c_init);
};
Structure::Structure( std::vector<int> c_init)
{c= c_init;
}
Structure::Structure(){
}
struct结构{
std::向量c;
结构();
结构(std::向量c_init);
};
Structure::Structure(std::vector c_init)
{c=c_init;
}
结构::结构(){
}
下面的节目
#include <iostream>
#include <vector>
#include <map>
#include "structr.h"
using namespace std;
int main () {
map<int, Structure*> StructureMap;
vector<int> foo;
foo.push_back(39);
foo.push_back(70);
foo.push_back(72);
StructureMap[1]=new Structure( foo);
cout << (*StructureMap[1]).c[0] << "\n" ;
return 0;
}
#包括
#包括
#包括
#包括“struct.h”
使用名称空间std;
int main(){
地图结构图;
矢量foo;
foo.推回(39);
foo.推回(70);
foo.推回(72);
StructureMap[1]=新结构(foo);
cout地图已正确填充,结果显示39
。山狮lldb
无法从错误消息中理解结构类型。这与地图本身无关
这并不奇怪。编写好的调试器很难,正如维基百科所说,“LLDB处于早期开发阶段”这很可能是一个调试信息问题,除非您手动编译同一个gcc,否则您肯定在使用clang及其不同版本。您可以做的一件有趣的事情是比较狮子身上发射的侏儒和山狮身上发射的侏儒,看看差异在哪里。作为asi在de中,您可能可以使用数据格式化程序访问std::map,例如通过执行p*StructureMap而无需索引
20 StructureMap[1]=new Structure( foo);
21
-> 22 cout << (*StructureMap[1]).c[0] << "\n" ;
23
24 return 0;
25 }
(lldb) p *StructureMap[1]
(Structure) $6 = {
c = size=3 {
[0] = 39
[1] = 70
[2] = 72
}
}
19 foo.push_back(72);
20 StructureMap[1]=new Structure( foo);
21
-> 22 cout << (*StructureMap[1]).c[0] << "\n" ;
23
24 return 0;
25 }
(lldb) p *StructureMap[1]
error: call to a function 'std::map<int,Structure*,std::less<int>,std::allocator<std::pair<const int, Structure*> > >::operator[](int const&)' that is not present in the target
error: Couldn't materialize struct: Structure hasn't been laid out yet
(lldb)