小编and*_*ykx的帖子

如何用非平凡的初始值填充向量?

我知道如何使用非平凡的初始值填充std :: vector,例如序列号:

void IndexArray( unsigned int length, std::vector<unsigned int>& v )
{
    v.resize(length);
    for ( unsigned int i = 0; i < length; ++i )
    {
        v[i] = i;
    }
}
Run Code Online (Sandbox Code Playgroud)

但这是一个for循环.有没有一种优雅的方法来使用stl功能(而不是使用Boost)使用更少的代码行?

c++ stl

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

字符串作为主键的性能损失?

使用字符串作为主键而不是bigints等会有什么性能损失?字符串比较比整数比较昂贵得多,但另一方面,我可以想象在内部DBMS将计算散列键以减少惩罚.

我工作的应用程序使用字符串作为几个表(MySQL)中的主键.改变这一点并非易事,我想知道可以通过哪些方式获得合理的工作.

mysql database primary-key

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

模拟或真正的课程?

使用其他类(作为成员或作为方法的参数)的类需要具有适合单元测试的实例.如果你有这些类可用并且没有引入其他依赖项,那么使用真实的东西而不是模拟更好吗?

unit-testing mocking

12
推荐指数
3
解决办法
1172
查看次数

循环展开什么时候有效?

循环展开是帮助编译器优化性能的常用方法.我想知道是否以及在多大程度上性能增益受到循环体内的影响:

  1. 报告数量
  2. 函数调用次数
  3. 使用复杂的数据类型,虚拟方法等
  4. 动态(de)分配内存

你用什么规则来决定是否要解除性能关键循环?在这些情况下,您还考虑了哪些其他优化?

c++ algorithm optimization performance

12
推荐指数
3
解决办法
3016
查看次数

如何在C#中实现const-correctness?

可能重复:
C#中的"const correctness"

我已经编写了很多年的C++,但对C#来说还是比较新的.在学习C#时,我发现const关键字的使用比C++更有限.例如,AFAIK 没有办法向函数const声明参数.我觉得我可能无意中改变我的函数参数(可能是复杂的数据结构),我只能通过测试来检测,这让我感到很不舒服.

你是如何处理这种情况的?

c# c++ const-correctness

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

在指定目录中便携式生成新文件名

我怎么可以移植(我最感兴趣的是windows和linux)在指定的目录中生成一个新的文件名,带有指定的文件名前缀和后缀?

std::string UniqueName(std::string const& dir, std::string const& prefix,
                       std::string const& suffix);
Run Code Online (Sandbox Code Playgroud)

任何实现此功能的建议,尽可能少地明确依赖于特定平台.

c++

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

默认模板类参数混淆了g ++?

昨天我遇到了一个g ++(3.4.6)编译器问题,我编译的代码使用Intel(9.0)编译器没有问题.这是一个代码片段,显示发生了什么:

template<typename A, typename B>
class Foo { };

struct Bar {
   void method ( Foo<int,int> const& stuff = Foo<int,int>() );
};
Run Code Online (Sandbox Code Playgroud)

g ++编译器错误是:

foo.cpp:5: error: expected `,' or `...' before '>' token
foo.cpp:5: error: wrong number of template arguments (1, should be 2)
foo.cpp:2: error: provided for `template<class A, class B> struct Foo'
foo.cpp:5: error: default argument missing for parameter 2 of `void Bar::method(const Foo<int, int>&, int)'
Run Code Online (Sandbox Code Playgroud)

显然,当以这种方式编写时,不接受默认参数,并且编译器假定指定了新的函数参数而不是第二个模板参数,然后它需要一个默认值,因为stuff参数有一个.我可以通过创建一个typedef来帮助编译器,然后一切编译都很好:

template<typename A, typename B>
class Foo { }; …
Run Code Online (Sandbox Code Playgroud)

c++ gcc templates g++ intel

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

C++编码指南102

如果您被允许在"C++编码标准"(Herb Sutter和Andrei Alexandrescu)的101指南中添加另一个编码指南,您会添加哪些?

c++ coding-style

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

hg访问控制到中央存储库

我们来自一个颠覆背景,我们有一个QA经理,一旦他确认所有QC活动都已完成,他就会向中央存储库提供提交权限.

我和几个同事开始使用mercurial,我们希望有一个包含我们QC-ed更改的共享存储库.每个开发人员都会克隆存储库并将其更改推送回共享存储库.我已经阅读了HG init教程并浏览了红豆书,但无法找到如何控制允许谁将更改推送到共享存储库.

我们现有的QA-manager控制提交模型将如何转化为一个多变的"中央"存储库?

mercurial

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

如何处理shell脚本中的NFS延迟

我正在编写shell脚本,其中很多时候会将一些东西写入文件,然后执行一个读取该文件的应用程序.我发现,通过我们公司,网络延迟差别很大,因此一个简单sleep 2的例子就不够健壮.

我试着编写一个(可配置的)超时循环,如下所示:

waitLoop()
{
   local timeout=$1
   local test="$2"

   if ! $test
   then
      local counter=0
      while ! $test && [ $counter -lt $timeout ]
      do
         sleep 1
         ((counter++))
      done

      if ! $test
      then
         exit 1
      fi
   fi
}
Run Code Online (Sandbox Code Playgroud)

这适用于test="[ -e $somefilename ]".但是,测试存在是不够的,我有时需要测试某个字符串是否写入文件.我试过了 test="grep -sq \"^sometext$\" $somefilename",但这没用.有人可以告诉我为什么吗?

是否有其他更简洁的选项来执行此类测试?

bash ksh latency

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