小编Ruc*_*chi的帖子

在std :: map中排序,其中key是std :: string

我有一个std :: map mymap

现在,如果我在地图中插入值,如:

std::map <string, string> mymap;
mymap["first"] = "hi";
mymap["third"] = "how r you";
mymap["second"] = "hello";
Run Code Online (Sandbox Code Playgroud)

现在我想迭代地图并以排序(键)方式打印值:

map<string, string>::iterator itr;
for(itr = mymap.begin(); itr != mymap.end(); itr++)
{
   string newline = itr->second;
   cout << newline << endl;
}
Run Code Online (Sandbox Code Playgroud)

输出应该是:

hi 
hello 
how r you 
Run Code Online (Sandbox Code Playgroud)

我认为默认情况下,地图存储按排序键方式存储,但我在输出中得到的输入与输入相同.我需要为此提供我的排序功能,还是需要在迭代地图之前做一些额外的事情?

c++ stl

17
推荐指数
2
解决办法
7万
查看次数

在二进制堆中删除

我只是想学习二进制堆,并对在二进制堆中执行删除操作有疑问.我已经读过我们可以从二进制堆中删除一个元素,我们需要重新封装它.

但在以下链接中,它表示不可用:

http://en.wikibooks.org/wiki/Data_Structures/Tradeoffs

                Binary Search  AVL Tree   Binary Heap (min)  Binomial Queue (min)

Find            O(log n)       O(log n)   unavailable         unavailable
Delete element  O(log n        O(log n)   unavailable         unavailable
Run Code Online (Sandbox Code Playgroud)

我对此感到困惑.

提前感谢所有澄清.

priority-queue binary-heap data-structures

6
推荐指数
1
解决办法
2568
查看次数

从tcl中的列表中删除子列表

我想从Tcl中的列表中删除子列表.我知道如何使用主列表,lreplace但我不知道如何为子列表.例如:

set a { 1 2  { {3 4} { 4 } } }
Run Code Online (Sandbox Code Playgroud)

现在我想{4}从内部列表中删除{ {3 4} {4} }.最终的清单应该是:

a { 1 2  { {3 4} } }

请建议如何点他的.

tcl

5
推荐指数
1
解决办法
2707
查看次数

复制构造函数中的指针参数

我有一个问题,我想在进行深度复制时克隆对象指针。就像我有 T* t1 并且我想以 *t1.x= *t2.x 的方式创建一个新的对象指针 T* t2。

编写一个复制构造函数,其工作方式如下:

T(const T* cpy)
{
   m_var = (*cpy).m_var;
}

T* t1 = new T;
T* t2(t1);
Run Code Online (Sandbox Code Playgroud)

如果使用上述方法,我应该注意什么?

谢谢鲁奇

c++

3
推荐指数
1
解决办法
1538
查看次数

在类构造函数中初始化struct

我们如何在类的构造函数中初始化结构指针.例:

struct my_struct{
    int i; 
    char* name;
}; 
class my_class{ 
    my_struct* s1;
    my_class() {
        // here i want to make s1->i = 10; and s1->name = "anyname" ;  
        // should i assign it like s1->i= 10; and call new for s1->name and strcpy(s1->name "anyname");  
        // it compiles in g++ without any warning/error but gives seg fault at run time  
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ constructor struct

2
推荐指数
1
解决办法
8881
查看次数

**glibc检测到***free():无效指针:0x0000000000400b2c

请考虑以下代码:

int main()
{
    char* s = (char*) malloc(sizeof(char)*10);
    s="hello";
    free(s);
}
Run Code Online (Sandbox Code Playgroud)

执行此程序时,我收到一个错误:

** glibc detected *** free(): invalid pointer: 0x0000000000400b2c

我对这个错误的研究表明它可能是由于没有分配足够的内存空间引起的malloc().但程序已经调用malloc(),产生足够的空间10 char秒.

c

1
推荐指数
2
解决办法
3632
查看次数

stl :: map中的指针

我有关于std :: map的查询.

如果我有一个std :: map,如:

std::map <T1, T2*> my_map;
T1 t;
T2* tt = new T2;
my_map[t]=tt;
Run Code Online (Sandbox Code Playgroud)

谁负责清理这个容器,T2的析构函数会处理它(T2*tt).此外,如果我想在整个程序中保留此容器,我应该在哪里清理它.

谢谢

c++

1
推荐指数
1
解决办法
1751
查看次数

std :: bad_alloc g ++的运行时错误

以下代码给出了使用g ++的错误的alloc : std::bad_alloc what(): "St9bad_alloc". 我无法理解原因,因为这是我添加的第一个元素,vector因此不存在内存限制问题

#include <iostream>
#include <vector>
#include <string>

using namespace std;

class MyCity {
  string name;
  std::vector<pair<string,double> > neighbours;
public:
  MyCity(string s)
  {
    name =s;
    // neighbours.clear();
  }
  MyCity(string s, string s1, double d)
  {
    name = s;
    neighbours.push_back(std::make_pair(s1,d));
  }
};

class MyState {
  vector<MyCity*> cities;
  string name;
public:
  MyState() { }
  MyState(string s)
  {
    name =s;
  }
  bool add_city(string name, string neigh, double d)
  {
    MyCity* c = new MyCity(name,neigh,d);
    cities.push_back(c); …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
939
查看次数

标签 统计

c++ ×5

binary-heap ×1

c ×1

constructor ×1

data-structures ×1

priority-queue ×1

stl ×1

struct ×1

tcl ×1