我有一个关于std::vectors中对象指针的有效性的问题。我不确定以下示例中的内存是否被正确保存,以及是否以我想要的方式访问这些指针:
// class which should hold the 4 Indices
struct Face
{
Face(){};
Face(std::array<int, 4> indices) : Indices(indices) // array is copied and saved in face object
{}
std::array<int, 4> Indices{};
}
stati
我有一个从文件中逐行读取数据的程序。我想将该行的一些子字符串复制到映射中,如下所示:
std::map< DWORD, std::string > my_map;
DWORD index; // populated with some data
char buffer[ 1024 ]; // populated with some data
char* element_begin; // points to some location in buffer
char* element_end; // points to some location in buffe
我正在尝试探索创建指针的不同方法。在下面的代码中,我尝试以两种不同的方式创建一个指向map的键/值对的指针: #include <iostream>
#include<map>
using namespace std;
int main(){
//creating the map & the key/value pair
map<string,string> mp;
mp["key"]="value";
//This gives an error:taking the addres
我想通过引用传递一个映射到一个函数,以便该函数可以修改它。函数创建和返回此映射也是可以接受的,因为它不返回任何其他内容,但引用传递似乎更容易。我不知道为什么我会收到以下错误,因为我遵循了本文中的建议
错误:
error: invalid initialization of non-const reference of type ‘std::map<int, std::vector<double> >&’ from an rvalue of type ‘std::map<int, std::vector<double> >*’
我的伪码
v
这个问题可能有点粗略,因为我家里没有可用的代码,但我知道这件事会困扰我整个周末。
当我试图将一些代码更新为C++11时,我开始用std::unordered_map替换一些std::map。代码只使用std::map::find()访问映射中的特定元素,因此我认为替换应该很容易。返回的迭代器存储在一个auto-typed变量(auto res = map.find( x ) )中,所以输入应该很好。然而,当使用res->second.do_stuff()访问存储的元素时,我得到了一个编译器错误,告诉我,struct std::pair<char, B> does not ha
对不起,我没有提出这个问题,。这段代码类似于:
class Bar
{
public:
// some stuff
private:
struct Foo
{
std::unordered_map<std::string, std::unique_ptr<Foo>> subFoo;
// some other basic variables here
};
Foo foo;
};
我对subFoo有了基本的认识。但是,我想知
我有以下的类和类型:
class Object
{
protected:
long int id;
public:
Object(void);
~Object(void) {};
long int get_id(void);
};
typedef map<string, Object> obj_map;
然后我有了它的孩子:
class Image: public Object
{
private:
path full_path;
int x;
int y;
img image;
public:
Imag
因此,我有一个函数,它接受一个映射作为参数,如下所示。
function do_dope_stuff(int arg1, std::map<uint32_t, parent_class>& my_object){
//do some programmer magic
}
然后从几个不同的地方调用这个函数,其中一个映射ID的对象类型是脱皮的。
do_dope_stuff(int, std::map<uint32_t, child_class1>&)
or
do_dope_stuff(int, std::map<uint32_t, chi
有一段时间我一直在碰壁,我决定提交并发布我的错误。
我有一个传递std::map的模板(如下所示),它位于一个名称空间中。这段代码编译得很好。
我的问题发生在尝试调用函数模板时。我得到以下错误:
error: no matching function for call to
'getValuePointer(Muon*&, std::map<int, MET*, std::less<int>,
std::allocator<std::pair<const int, MET*> > &
因此,我试图将unordered_map设置为另一个unordered_map的值。现在,我遇到的问题是无法将值放入第二个unordered_map中。我的代码看起来是这样的。
std::string postCode;
std::string[] postCodeSource = new std::string{1111,2222,3333,4444};
std::unordered_map<std::string,unordered_map<int,Foo*>*> data;
int k1=1234;//can be any number
for
我正在尝试将std::map存储在共享内存段上。但我无法找回地图。
我创建了共享内存段(使用下面的类),并将映射地址分配给它。
但是当我试图恢复它时,我得到了一个错误的指针。
以下是一些代码片段:
// This is in my header file
CSharedMem * shMem;
// This is in my cpp file - inside my class constructor
shMem = new CSharedMem("MyShMem", 16536);
void * ptr = shMem->Get
我观察到std::map::clear()的奇怪行为。这个方法应该在被调用时调用元素的析构函数,但是在调用clear()之后内存仍然是可访问的。
例如:
struct A
{
~A() { x = 0; }
int x;
};
int main( void )
{
std::map< int, A * > my_map;
A *a = new A();
a->x = 5;
my_map.insert( std::make_pair< int, *A >( 0, a ) );
// addresses will be the same