小编ToB*_*oBe的帖子

如果文件被识别为未更改,如何强制Git提交文件

我有2个二进制文件,有

  • 完全相同的大小
  • 完全相同的修改日期
  • 完全相同的创建日期

  • 不同的内容

如果我用另一个文件替换一个文件,git不会将此文件识别为已更改.

文件系统:NTFS,操作系统:Windows 7,Git版本:1.9.0

(我的解决方法是编辑这个新文件以获得新的修改日期,但我保留相同的内容)

如何强制Git提交新文件?

git

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

为什么std :: vector :: push_back需要赋值运算符

std::vector::push_back(constT& value)
Run Code Online (Sandbox Code Playgroud)

根据要求类型T为CopyInsertable .

但是,除非我提供公共赋值运算符,否则使用failes(clang,GCC,Visual;两者都没有c ++ 11)编译以下程序.

#include <vector>

class A {
  A& operator= (const A& rhs); //private !! 
};

int main()  {
 std::vector<A> v;
 A a;
 v.push_back(a);
}
Run Code Online (Sandbox Code Playgroud)

为什么我需要提供这个赋值运算符,我的印象是复制结构就足够了.

PS我无法在标准中找到这个定义的位置,所以如果你能指出参考,我将非常感激

c++ stl vector c++03

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

为什么 Boost Format 和 printf 在相同的格式字符串上表现不同

Boost Format 文档说:

它的目标之一是提供 printf 的替代品,这意味着 format 可以解析为 printf 设计的格式字符串,将其应用于给定的参数,并产生与 printf 相同的结果。

当我使用相同的格式字符串比较 boost:format 和 printf 的输出时,我得到了不同的输出。在线示例在这里

#include <iostream>
#include <boost/format.hpp>

int main()
{
    boost::format f("BoostFormat:%d:%X:%c:%d");

    unsigned char cr =65; //'A'
    int cr2i = int(cr);

    f % cr % cr % cr % cr2i;

    std::cout << f << std::endl;
    printf("Printf:%d:%X:%c:%d",cr,cr,cr,cr2i);
}
Run Code Online (Sandbox Code Playgroud)

输出是:

升压格式: A:A:A:65

打印输出: 65:41:A:65

不同之处在于当我想将字符显示为整数类型时。

为什么有区别?这是一个错误还是想要的行为?

c c++ printf boost boost-format

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

Simulink 中的循环缓冲区

我想在纯 Simulink 模型中实现一个非常巨大的(10^6 个元素 - 固定大小)循环缓冲区(没有进一步的工具箱,没有 S-Function)。

在某些时候,我需要读取一些元素(任何地方,而不仅仅是开始或结束)。

我无法使用以下解决方案:

  1. “队列块”或“缓冲区块”(我没有可用的信号处理工具箱)
  2. “离散延迟”(我需要一个巨大的缓冲区,并且不会在模型中放置 10^6 的延迟)
  3. “Sim Events”(我需要从这个模型生成代码)

我还没有尝试过“S-Function”,我正在寻找替代解决方案。

您还知道什么进一步的方法?

code-generation simulink

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

用于std :: map :: at()的C++ 98 Wrapper

我只能使用C++ 98,并且无法访问std::map::at()C++ 11中添加的实现.

我的目标是编写一个非成员函数at()函数(使用C++ 98),其行为类似于std::map::at().

因此我写了以下非成员函数:

template<typename K, typename V>
V& at(std::map<K, V> map, K key)
{
  if (map.find(key) == map.end())
    throw std::out_of_range("key not found");
  return map.find(key)->second;
}
Run Code Online (Sandbox Code Playgroud)

我至少可以看到一个问题,那就是我的版本表现得好像我已经返回了一个副本(见下文).

std::map<int,int> myMap;
myMap.insert(std::pair<int,int>(2,43));

// myMap.at(2)=44;            // modifies the reference
// assert(44==myMap.at(2));   // fine 

at(myMap,2)=44;               // does not modify the value inside the map, why?
assert(44==myMap.at(2));      // not fine
Run Code Online (Sandbox Code Playgroud)
  1. 我该如何解决这个问题?
  2. 我的包装器还有其他问题吗?

c++ stl c++11

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

如何对用户定义的类型使用BOOST_CHECK_CLOSE

我想检查以下类型的对象,如果它们几乎/接近预期值.

class MyTypeWithDouble
{
    public:
      MyTypeWithDouble(double); 
      bool operator == (const MyTypeWithDouble& rhs) const; //Checks for Equality
    private:
      double m; 
};

/////////////////////////////////////////

class MyTypeWithVector
{
    public:
      MyTypeWithVector(std::vector<double>v);
      bool operator == (const MyTypeWithVector& rhs) const; //Checks for Equality 
    private:
      std::vector<double> v;
};
Run Code Online (Sandbox Code Playgroud)

所以单元测试看起来像这样

/// TEST1 ////////////////
MyTypeWithDouble t1(42.100001);
BOOST_CHECK_CLOSE(t1,42.1,0.1); 

//////TEST2//////////////////////////////


std::vector<double> v; //no initalizer do not have c++11 :-(
v.push_back(42.1); 
MyTypeWithVector t2(v);
std::vector<double> compare;
compare.push_back(42.100001);

MY_OWN_FUNCTION_USING_BOOST(t2,compare,0.1); //There is only   BOOST_CHECK_EQUAL_COLLECTION available for collections
Run Code Online (Sandbox Code Playgroud)
  • 我不想改变'==运算符的实现或提供Getters.
  • 添加其他运算符功能就可以了.

谢谢,ToBe

c++ boost unit-testing c++03

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

使用windbg仅获得第二次机会异常

我需要调试在Windows上运行的正在运行的程序.它有时会因"内存访问冲突"而崩溃.

使用windbg(无法使用IDE)我附加到运行进程(这是程序不能停止的要求)

命令行是

windbg -g -p <pid>
Run Code Online (Sandbox Code Playgroud)

问题是我现在抓住所有第一次机会异常,但我只对任何第二次机会异常感兴趣(不关心哪种类型的异常).

如何设置windbg以捕获任何第二次机会异常?

windbg

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

如何使用STL将struct的向量转换为map

我有一个std::vector<Person> v

struct Person
{
    Person(int i,std::string n) {Age=i; this->name=n;};
    int GetAge() { return this->Age; };
    std::string GetName() { return this->name; };
    private:
    int Age;
    std::string name;
};
Run Code Online (Sandbox Code Playgroud)

我需要转变为 std::map<std::string,int> persons

在编写类似这样的代码时我遇到了困难:

std::transform(v.begin(),v.end(),
  std::inserter(persons,persons.end()), 
  std::make_pair<std::string,int>(boost::bind(&Person::GetName,_1)),  (boost::bind(&Person::GetAge,_1)));
Run Code Online (Sandbox Code Playgroud)

在c ++ 03中使用stl算法转换vector<Person> v成最佳方法是什么map<std::string,int> persons

c++ stl vector c++03

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

标签 统计

c++ ×5

c++03 ×3

stl ×3

boost ×2

vector ×2

boost-format ×1

c ×1

c++11 ×1

code-generation ×1

git ×1

printf ×1

simulink ×1

unit-testing ×1

windbg ×1