小编Rob*_*p87的帖子

MongoDB插入引发重复键错误

尝试将批量插入到 mongodb集合时,我收到以下错误.

pymongo.errors.DuplicateKeyError:E11000重复键错误索引:cmdDistros.locDistro.$ id dup key:{:ObjectId('51dac9d0c74cd81acd85c0fd')}

我在创建任何文档时都没有指定_id,所以mongodb应该创建唯一的索引吗?这是我使用的代码:

#Populate database with uniform distribution
            entries = []
            for coor in freeIndices:
                for theta in range(360):
                    entry = {"x" : coor[0], "y" : coor[1], "heading" : theta}
                    for i in range(numData):
                            entry["data" + str(i)] = 1./numData
                    entries.append(entry)
            print "Entries created, loading into database..."

            locDistro.insert(entries)
Run Code Online (Sandbox Code Playgroud)

考虑到mongoDB的命运,我尝试使用以下方法创建自己的索引:

#Populate database with uniform distribution
            entries = []
            idNum = 0
            for coor in freeIndices:
                for theta in range(360):
                    print idNum
                    entry = {"_id" : idNum, "x" …
Run Code Online (Sandbox Code Playgroud)

python database mongodb pymongo

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

编辑大型文本文件中的单行

所以我需要记录一组4个整数,它们的值在每天的每一秒都不同.即:

#Here the values are initialized to the same value, however they will change as samples are taken
data = [[.25 for numData in range(4)] for numSecs in range(86400)]
Run Code Online (Sandbox Code Playgroud)

现在显然是一个二维数组(gah它的python,LIST),其第一个索引长度是86400是非常不切实际的.相反,我想创建一个文本文件,其格式为86400行:

numSec data0 data1 data2 data3

0 .25 .25 .25 .25
1 .25 .25 .25 .25
2 .25 .25 .25 .25
...
Run Code Online (Sandbox Code Playgroud)

并且在采集样本时,我希望能够编辑此文件,不,我希望能够编辑numSec =采样的第二个文件的行.例如,以numSec = 2(午夜后2秒)拍摄的样本将导致我的程序编辑该文件,以便:

0 .25 .25 .25 .25
1 .25 .25 .25 .25
2 .70 .10 .10 .10
...
Run Code Online (Sandbox Code Playgroud)

看起来很简单,我甚至阅读了一些帖子,演示了如何在文本文件中重写单个.问题是,它们都要求您读入整个文件.我不希望我的程序每秒读取86,400行.

因此,我们得出了一个问题:我是否可以在文本文件中读取一行,编辑它并将其写回文件,而无需每次都需要进行更改时读取整个文件?

PS我应该注意我正在运行Ubuntu 12.04(精确),这是用于ROS节点

PPS该程序将运行任意数天,因此可以多次读取和重写每个"第二"数据.我想使用文件的另一个原因是如果系统需要关闭,我想保存下次运行时的分发.

python text-files

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

为什么没有将 bind_back 添加到 C++20 中?

在 C++20 中,bind_front 被添加到标准库中,根据这篇论文:http : //www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0356r4.html

该论文最初包含一个 bind_back 函数,但在修订版 1 之后,它表示根据 LEWG 的指导将其删除。

这个决定的动机是缺乏这个功能的引人注目的用例。

在我看来,非交换数学运算的部分应用,例如std::minusstd::divides是这种函数的明显用例。有没有人知道为什么 LEWG 决定应该删除它?

c++ c++20

5
推荐指数
0
解决办法
196
查看次数

用于空安全指针访问的C/C++宏

我想为空安全指针访问编写一个C/C++宏.我目前有这个,效果很好:

#define NULL_SAFE(p, e) if (p) p->e
NULL_SAFE(myPtr, myMethod(myArg));
Run Code Online (Sandbox Code Playgroud)

但我真正想要的是拥有这样的东西:

NULL_SAFE(
  myPtr, myMethod(myArg),
  myOtherPtr, myOtherMethod(myOtherArg),
  yetAnotherMyPtr, plsStopMethod(grArg),
  ...
);
Run Code Online (Sandbox Code Playgroud)

这将扩展到:

  if (myPtr) myPtr->myMethod(myArg);
  if (myOtherPtr) myOtherPtr->myOtherMethod(myOtherArg);
  if (yetAnotherMyPtr) yetAnotherMyPtr->plsStopMethod(grArg);
Run Code Online (Sandbox Code Playgroud)

我可以想到我可能想要使用的一大堆这些,但它们都运行在与此相同的概念上.

这可能吗?这已经存在于某个地方吗?有什么建议?谢谢你的帮助!

c c++ macros null pointers

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

将 std::allocate_shared 与多态资源分配器一起使用

我正在尝试使用 a 创建共享指针std::pmr::monotonic_buffer_resource,但无法编译它。我缺少什么?

https://godbolt.org/z/R9​​jdju

#include <memory>
#include <memory_resource>

int main() {
    char buffer[100];
    std::pmr::monotonic_buffer_resource mbr(buffer, 100);
    std::shared_ptr<double> sp = std::allocate_shared<double>(mbr);
}
Run Code Online (Sandbox Code Playgroud)
在 /opt/compiler-explorer/gcc-10.1.0/include/c++/10.1.0/ext/alloc_traits.h:34 包含的文件中,
                 来自/opt/compiler-explorer/gcc-10.1.0/include/c++/10.1.0/bits/stl_uninitialized.h:67,
                 来自/opt/compiler-explorer/gcc-10.1.0/include/c++/10.1.0/memory:66,
                 来自<来源>:1:
/opt/compiler-explorer/gcc-10.1.0/include/c++/10.1.0/bits/alloc_traits.h:使用 __alloc_rebind = typename std::__allocator_traits_base::__rebind 替换 'template<class _Alloc, class _Up> <_Alloc, _Up>::type [with _Alloc = std::pmr::monotonic_buffer_resource; _Up = std::_Sp_counted_ptr_inplace<double, std::pmr::monotonic_buffer_resource, __gnu_cxx::_S_atomic>]':
/opt/compiler-explorer/gcc-10.1.0/include/c++/10.1.0/bits/shared_ptr_base.h:542:13:需要从 'class std::_Sp_counted_ptr_inplace<double, std::pmr::monotonic_buffer_resource, __gnu_cxx::_S_atomic>'
/opt/compiler-explorer/gcc-10.1.0/include/c++/10.1.0/bits/shared_ptr_base.h:679:43:需要来自 'std::__shared_count<_Lp>::__shared_count(_Tp*&, std ::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...) [with _Tp = double; _Alloc = std::pmr::monotonic_buffer_resource; _Args = {}; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]'
/opt/compiler-explorer/gcc-10.1.0/include/c++/10.1.0/bits/shared_ptr_base.h:1371:71:需要来自 'std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std:: _Sp_alloc_shared_tag<_Tp>, _Args&& …

c++ shared-ptr allocator c++pmr

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

标签 统计

c++ ×3

python ×2

allocator ×1

c ×1

c++20 ×1

c++pmr ×1

database ×1

macros ×1

mongodb ×1

null ×1

pointers ×1

pymongo ×1

shared-ptr ×1

text-files ×1