小编mad*_*hov的帖子

排序指针矢量

我在尝试对指针向量进行排序时遇到了一些麻烦.

这是我到目前为止所做的:

class Node
{
    private:
    vector <Node*> _children;
    string _data;
    ...
    public:
    void Node::add_child(Node* child)
    {
        ...
        sort(_children.begin(), _children.end());
    }

    bool Node::operator<(const Node& node)
    {
        return (this->_data.compare(node._data) == -1);
    }
};
Run Code Online (Sandbox Code Playgroud)

如果我这样写的话,我的不足运算符就可以了:

Node* root = new Node("abc");
Node* n = new Node("def");
cout << (*root<*n) << endl;
Run Code Online (Sandbox Code Playgroud)

为什么排序从不打电话给操作员?任何帮助,将不胜感激!谢谢.

madshov

c++ sorting vector

13
推荐指数
3
解决办法
2万
查看次数

带有go-viper的多个配置文件

是否可以使用Viper加载/合并多个配置文件?假设我有一个包含我的程序配置的通用配置文件,以及具有每个客户端配置的客户端特定配置文件,其中一个将被加载,具体取决于程序的输入.

谢谢.

go viper-go

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

将大量数据存储在内存中

我正在寻找一种方法来存储几个gb的数据.数据被加载到树结构中.我希望能够通过我的main函数访问这些数据,但是每次运行程序时我都不想将数据重新加载到树中.做这个的最好方式是什么?我应该创建一个单独的程序来加载数据,然后从主函数调用它,还是有更好的选择?

谢谢Mads

c++ memory-management

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

使用mmap时出现段错误

我试图第一次使用mmap来存储一个包含大量数据的树对象.树类基本上包含一个指向Node类的根的指针,每个Node实例都有一个指向它的子节点的数组.我认为mmap正在做它应该做的事情,因为我可以访问树的常量成员,但是当我尝试访问指向root的指针时,我得到了一个段错误.

以下是如何使用根节点创建树:

int main(int argc, char *argv[])
{
    Tree *map;
    ...
    map = (Tree*)mmap(0, FILESIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
    if (map == MAP_FAILED) {
        close(fd);
        perror("Error mmapping the file");
        exit(EXIT_FAILURE);
    }


    Node* root = new Node("data");
    map->set_root(root);
        ...
}
Run Code Online (Sandbox Code Playgroud)

以下是我访问树的方法:

int main(int argc, char *argv[])
{
    int i;
    int fd;
    Tree *map;

    fd = open(FILEPATH, O_RDONLY);
    if (fd == -1) {
        perror("Error opening file for reading");
        exit(EXIT_FAILURE);
    }

    map = (Tree*)mmap(0, FILESIZE, PROT_READ, MAP_SHARED, fd, 0);

    if (map …
Run Code Online (Sandbox Code Playgroud)

c++ mmap segmentation-fault

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

c ++在向量的末尾插入元素

我遇到了矢量容器的问题.我正在努力提高将大量元素插入到一个向量中的性能.

基本上我正在使用vector :: reserve来扩展我的vector _children如果需要:

if (_children.capacity() == _children.size())
{
     _children.reserve(_children.size() * 2);
}
Run Code Online (Sandbox Code Playgroud)

并使用vector :: at()在_children的末尾插入一个新元素而不是vector :: push_back():

_children.at(_children.size()) = child;
Run Code Online (Sandbox Code Playgroud)

_children中已有一个元素,因此第一个元素应插入位置1,此时的容量为2.

尽管如此,还是会抛出out_of_range错误.有人可以向我解释一下,我在这里误解了什么?即使所选位置小于矢量容量,是否也不可能只插入一个额外的元素?如果需要,我可以发布更多代码.

提前致谢.

/ MADS

c++ size vector

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

如何在golang中模拟函数

我写了一个简单的包,它基本上由很多getter函数组成.此包中的每个文件对应一个服务,因此例如产品文件包含与产品服务/ db相关的函数,订单文件以订购服务等.每个函数将db资源作为参数作为参数,并将参数作为参数sql,例如.productid,name,orderid.每个函数都返回一个结构(例如Order,product)或错误:

// product.go

package lib

type Product struct {
   ID int
   Name string
   Price float
}

func GetProductById(DB *sql.DB, ID int) (p Product, err error) {
   q := "SELECT * FROM product WHERE id = " + ID
   ...
}

func GetProductByName(DB *sql.DB, name string) (p Product, err error) {
   ...
}

// order.go

package lib

type Order struct {
   ID int
   Date string
   Items []items
}

func GetOrderById(DB *sql.DB, ID int) (o Order, err error) {
   ...
} …
Run Code Online (Sandbox Code Playgroud)

mocking go

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