小编voi*_*ter的帖子

分散工作流程的git中的"简单"与"当前"push.default

从功能上讲,在分散的工作流程中,我没有看到配置设置simplecurrent选项之间的区别push.default.

current将当前分支推送到指定远程上的同名分支.simple对于当前分支的跟踪和任何未跟踪的遥控器,它将有效地做同样的事情(它在两种情况下都强制执行相同的分支名称).

有人可以解释我失去的分散工作流程之间的任何重要差异吗?

git git-push git-config

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

使用std :: move()是不成熟的优化?

假设我有以下代码:

int main()
{
    std::vector<std::string> strs;

    std::string var("Hello World");
    // Make some modifications to 'var'
    strs.push_back(std::move(var));
}
Run Code Online (Sandbox Code Playgroud)

我想指出的样本部分是使用std::move().基本上我担心push_back()电话会有副本.假设我添加的字符串非常大.我还在学习C++ 11 r值引用,所以我不确定编译器如何在不使用的情况下优化副本(如果有的话)std::move().

任何人都可以解释这是否是一个过早的优化(在所有情况下强制移动,你想避免副本,一般情况下)?如果是这样,我应该期望编译器遵循哪些模式(或者最有可能遵循),这将导致优化和自动移动?

编辑

我想补充一点,我理解自动移动如何在函数返回值上发生,因为NRVO/RVO适用.我在这里给出的具体例子不适用于RVO,所以我不确定.

c++ c++11

64
推荐指数
4
解决办法
3791
查看次数

如何正确替换全局new和delete运算符

首先,至少有4-5个主题在SO上有类似的主题.我读了他们每个人,我觉得他们真的没有帮我解决这个具体问题.如果其他人发现重复的问题,我道歉.在我发布之前,我已经完成了我的搜索工作,因为它似乎是一个非常常见的问题.

我在Windows 7上使用Visual Studio .NET 2003.

我有自己的new/delete重载,指向我自己的malloc()和free()的自定义调用.我的新/删除重载在一个头文件中,我已经包含在几个文件中.

问题是,代码库几乎是意大利面,没有简单的方法可以确保所有东西都能使用这些重载.包括第三方库是黑盒子.我们到处都使用STL.

在我的测试中,我发现STL仍在混合调用我自己的新/删除和标准的MSVC新/删除调用.

将我的头文件包含在数千个其他文件中似乎不太现实,这需要花费太长时间.任何人都可以提供一些关于如何正确有效地重载新/全局删除所以一切都使用我的自定义内存管理器的技巧?

c++ windows memory-management visual-studio-2003

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

如何正确比较C#中的十进制值?

我来自C++的背景,我知道你无法准确地比较浮点数是否相等.对于C#,我只是假设相同的策略适用于十进制值或一般的任何浮点值.

基本上,我有两个十进制值,如果它们彼此不相等,我需要执行一些操作.例如:

decimal value1, value2;
// Assume value1 and value2 are set somewhere to valid values.
if( value1 != value2 )
{
    // Do something
}
Run Code Online (Sandbox Code Playgroud)

如果这不能按预期工作,我愿意接受一个与误差范围进行相等比较的解决方案,比如.00001或类似的东西.这个问题的推荐解决方案是什么?

c# floating-point comparison

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

从Chrome扩展程序中的内容脚本中获取"此"标签ID?

从内容脚本中,是否可以访问该选项卡的ID?我想从内容脚本向后台页面发送一条消息,告诉我的扩展程序使用chrome.tabs.*api"使用此选项卡执行某些操作".需要一个TabID,当我的内容脚本可以简单地告诉它消息内容中的TabID时,在后台页面中做一堆逻辑以寻找一个TabID没有意义.

google-chrome-extension

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

与三元表达中的逗号混淆

我今天发现了以下有趣的代码:

SomeFunction(some_bool_variable ? 12.f, 50.f : 50.f, 12.f)
Run Code Online (Sandbox Code Playgroud)

我创建了一个小样本来重现行为:

class Vector3f
{
public:
    Vector3f(float val)
    {
        std::cout << "vector constructor: " << val << '\n';
    }
};

void SetSize(Vector3f v)
{
    std::cout << "SetSize single param\n";
}

void SetSize(float w, float h, float d=0)
{
    std::cout << "SetSize multi param: " << w << ", " << h << ", " << d << '\n';
}

int main()
{
    SetSize(true ? 12.f, 50.f : 50.f, 12.f);
    SetSize(false ? 12.f, 50.f …
Run Code Online (Sandbox Code Playgroud)

c++

34
推荐指数
3
解决办法
1699
查看次数

如何在Windows的Git Bash中更改RGB颜色?

我在Windows中使用Git Bash,为了我的自定义git log格式,我想修改终端的确切RGB颜色值,以便我可以微调颜色输出.我的git日志格式在我的全局中如下.gitconfig:

lg1 = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset)%x09%C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset) %C(dim white)%an%C(reset) - %C(white)%s%C(reset)' --branches --remotes --tags
Run Code Online (Sandbox Code Playgroud)

我想在Git Bash中定义RGB值实际上映射到'蓝色',例如.知道我怎么能这样做吗?一步一步的说明会很精彩.提前致谢.

编辑

我设置我的.bashrc并且由于某种原因它不起作用.颜色没有变化:-(.这是我跑来看色彩的脚本:http://pastebin.com/9EsYmGCj和结果:http://i.imgur.com/1dJ3o1a.png

windows git shell msysgit

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

C#接口方法歧义

请考虑以下示例:

interface IBase1
{
   int Percentage { get; set; }
}

interface IBase2
{
   int Percentage { get; set; }
}

interface IAllYourBase : IBase1, IBase2
{
}

class AllYourBase : IAllYourBase
{
   int percentage;

   int Percentage {
      get { return percentage; }
      set { percentage = value; }
   }
}

void Foo()
{
   IAllYourBase iayb = new AllYourBase();
   int percentage = iayb.Percentage; // Fails to compile. Ambiguity between 'Percentage' property.
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,Percentage要调用的属性之间存在歧义.假设IBase1IBase2接口可能没有 …

c# oop interface ambiguity

31
推荐指数
6
解决办法
8166
查看次数

如何在C++中设计异常"类型"

在我编写的大多数代码库中非常常见的两种反模式是布尔返回值以指示成功/失败,以及通用整数返回代码以指示有关错误消息的更多详细信息.

这两个都非常类似于C,并且在我的拙见中不能很好地适应C++.

我的问题是关于在代码库中设计异常时的最佳实践.换句话说,表明失败的有限可能性的最佳方法是什么?例如,上述反模式之一通常会有一个巨大的枚举,每个枚举值代表一种特定类型的失败,例如FILE_DOES_NOT_EXISTNO_PERMISSIONS.通常这些保持尽可能通用,以便它们可以跨多个不相关的域(例如网络组件和文件I/O组件)使用.

类似于此的设计可以考虑用于异常是std::exception为每种类型的故障或可能出错的事物子类化一个具体的异常类型.所以在我之前的例子中,我们将有以下内容:

namespace exceptions {
  class file_does_not_exist : public std::exception {};
  class no_permissions : public std::exception {};
}
Run Code Online (Sandbox Code Playgroud)

我认为这更接近"感觉更好"的东西,但最终这似乎是一个维护噩梦,特别是如果你有数百个这样的"错误代码"转换成类.

我看到的另一种方法是简单地使用标准<stdexcept>类,例如std::runtime_error并且具有包含细节的字符串.例如:

throw std::runtime_error( "file does not exist" );
throw std::runtime_error( "no permissions" );
Run Code Online (Sandbox Code Playgroud)

这种设计更易于维护,但如果它们都可能从相同的核心位置或函数调用中被抛出,则有条件地捕获这些异常中的任何一个是困难的或不可行的.

那么什么是异常类型的良好,可维护的设计?我的要求很简单.我想要了解发生了什么的上下文信息(我的内存耗尽了吗?我是否缺少文件系统权限?我是否未能满足函数调用的前提条件(例如,错误的参数)?),我也喜欢能够相应地对该信息采取行动.也许我对待所有这些都是一样的,也许我对某些失败有特定的捕获语句,所以我可以用不同的方式从它们中恢复.

我对此的研究只引出了这个问题: C++异常类设计

这里的用户问我一个类似的问题,他/她底部的代码示例几乎是可爱的,但他/她的基本异常类不遵循开放/封闭原则,所以这对我来说不起作用.

c++ exception-handling

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

在C++中的变量声明中使用struct关键字

我觉得这可能与C语法有关,但我用C++开始编程,所以我不确定.

基本上我已经看到了这个:

struct tm t;
memset( &t, 0, sizeof(struct tm) );
Run Code Online (Sandbox Code Playgroud)

我对这种语法有点困惑,因为通常我希望上面的内容看起来像这样:

tm t;
memset( &t, 0, sizeof(tm) );
Run Code Online (Sandbox Code Playgroud)

这两者之间有什么区别,为什么要使用前者呢?

更新

tm我所指的结构是wchar.h,其定义如下:

struct tm {
        int tm_sec;     /* seconds after the minute - [0,59] */
        int tm_min;     /* minutes after the hour - [0,59] */
        int tm_hour;    /* hours since midnight - [0,23] */
        int tm_mday;    /* day of the month - [1,31] */
        int tm_mon;     /* months since January - [0,11] */
        int tm_year;    /* years …
Run Code Online (Sandbox Code Playgroud)

c++ struct

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