小编Fra*_*ank的帖子

使用C++输出运算符打印前导零?

如何在C++中格式化输出?换句话说,什么是C++相当于使用printf这样的:

printf("%05d", zipCode);
Run Code Online (Sandbox Code Playgroud)

我知道我可以printf在C++中使用,但我更喜欢输出运算符<<.

你会使用以下内容吗?

std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl;
Run Code Online (Sandbox Code Playgroud)

c++ formatting numbers

54
推荐指数
4
解决办法
7万
查看次数

是否有sorted_vector类,它支持insert()等?

通常,使用排序std::vector而不是a 更有效std::set.有没有人知道一个库类sorted_vector,它基本上有一个类似的接口std::set,但插入元素到排序的矢量(所以没有重复),使用二元搜索find元素等?

我知道写起来并不难,但最好不要浪费时间并使用现有的实现.

更新:使用排序向量而不是集合的原因是:如果您有数十万个小集合,每个集合只包含10个左右的成员,那么使用排序向量代替更高内存效率.

c++ sorting stl vector set

53
推荐指数
3
解决办法
5万
查看次数

如何将变量键/值对添加到列表对象?

我有两个变量,key并且value,我想将它们作为键/值对添加到列表中:

key = "width"
value = 32

mylist = list()
mylist$key = value
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

mylist
# $key
# [1] 32
Run Code Online (Sandbox Code Playgroud)

但我想这样做:

mylist
# $width
# [1] 32
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

r list

51
推荐指数
3
解决办法
6万
查看次数

二进制文字?

在代码中,我有时会看到人们以十六进制格式指定常量,如下所示:

const int has_nukes        = 0x0001;
const int has_bio_weapons  = 0x0002;
const int has_chem_weapons = 0x0004;
// ...
int arsenal = has_nukes | has_bio_weapons | has_chem_weapons; // all of them
if(arsenal &= has_bio_weapons){
  std::cout << "BIO!!"
}
Run Code Online (Sandbox Code Playgroud)

但是我在这里使用十六进制格式没有意义.有没有办法直接用二进制文件做?像这样的东西:

const int has_nukes        = 0b00000000000000000000000000000001;
const int has_bio_weapons  = 0b00000000000000000000000000000010;
const int has_chem_weapons = 0b00000000000000000000000000000100;
// ...
Run Code Online (Sandbox Code Playgroud)

我知道C/C++编译器不会编译它,但必须有一个解决方法吗?是否有可能在其他语言如Java?

c++

49
推荐指数
8
解决办法
7万
查看次数

使用boost :: shared_ptr时有什么潜在的危险?

使用时,你有什么方法可以用脚射击自己boost::shared_ptr?换句话说,当我使用时,我必须避免哪些陷阱boost::shared_ptr

c++ boost pointers shared-ptr

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

你如何在R中打印到stderr?

你如何打印到stderrR

这对于编写的脚本特别有用Rscript.

printing r stderr

49
推荐指数
5
解决办法
3万
查看次数

如何故意删除boost :: shared_ptr?

我有很多boost::shared_ptr<MyClass>对象,在某些时候我故意想要delete其中一些来释放一些记忆.(我知道那时我将永远不再需要尖头MyClass物体了.)我怎么能这样做?

我想你不能只delete()用我得到的原始指针调用get().

我见过一个函数get_deleter(shared_ptr<T> const & p)boost::shared_ptr,但我不知道如何使用它,并且还表示,实验就在旁边.(我想我有1.38升.)

也许只是boost::shared_ptr为变量分配一个新的空?这应该扔掉旧值并删除它.

c++ boost memory-management shared-ptr

45
推荐指数
3
解决办法
5万
查看次数

实施国际象棋引擎有多难?

我想知道实施国际象棋引擎有多难.是否已经有开源实现?

看起来你需要一个给定的板星座的评分函数,以及探索几个可能的未来板块星座的快速方法.探索所有可能的未来动作当然是不可能的,因此人们可以贪婪地遵循最有希望的动作,或使用模拟退火等近似技术来概率地跟踪可能的动作.

您是否认为这属于机器学习研究生项目的范围- 假设有一个学生可以使用的开源实现,那么基本的事情就像返回给定数字的下一个可能的动作一样?可能太难了?

让不同的团队在国际象棋引擎上工作然后让他们互相对抗是一个有趣的项目......

chess machine-learning

45
推荐指数
6
解决办法
2万
查看次数

如何撤消合并(没有提交)?

我只是做了一个svn merge将更改从主干合并到分支:

$ svn merge -r328:HEAD file:///home/user/svn/repos/proj/trunk .
--- Merging r388 through r500 into '.':
A    foo
A    bar
   C baz1
   C baz2
U    duh
[...]
Run Code Online (Sandbox Code Playgroud)

但是有太多的冲突,所以我想撤消这个.

一种方法是提交然后合并.但由于冲突我无法承诺.在这种情况下撤消的最佳方法是什么?

svn merge commit undo

45
推荐指数
2
解决办法
5万
查看次数

将迭代器转换为指针?

我有一个std::vectorn元素.现在我需要将指针传递n-1给具有函数最后元素的向量.

例如,我的vector<int> foo包含(5,2,6,87,251).一个函数需要vector<int>*,我想传递一个指针(2,6,87,251).

我可以(安全地)获取迭代器++foo.begin(),将其转换为指针并将其传递给函数吗?还是用&foo[1]

更新:人们建议我改变我的函数来获取迭代器而不是指针.在我的情况下,这似乎是不可能的,因为我提到的find功能是...的功能unordered_set<std::vector*>.那么在这种情况下,是将n-1元素复制foo到一个新的向量中并find使用指向该唯一选项的指针进行调用?非常低效!这就像画家Shlemiel,特别是因为我必须查询许多子集:最后一个n-1,然后n-2等等元素,看看它们是否在unordered_set.

c++ pointers iterator stl vector

44
推荐指数
3
解决办法
9万
查看次数