我们的存储库中有一个文件,我们之前删除了几个修订版.如何在不恢复整个存储库的情况下使用TortoiseSVN将其恢复?
所以,我有一堂课.这是一个有用的课程.我非常喜欢.我们称之为MyUsefulClass.
MyUsefulClass有一个公共方法.我们称之为processUsefulData(std::vector<int>&).
现在假设processUsefulData真的做了两件事,我想从中重构它:
std::vector<int> MyUsefulClass::processUsefulData(std::vector<int>& data)
{
for (/*...*/)
{
for (/*...*/)
{
// a bunch of statements...
}
}
for (/*...*/)
{
for (/*...*/)
{
// a bunch of other statements...
}
}
return data;
}
Run Code Online (Sandbox Code Playgroud)
现在,我想分割这些职责并重写代码
std::vector<int> MyUsefulClass::processUsefulData(std::vector<int>& data)
{
doProcessA(data, dataMember_);
doProcessB(data, otherDataMember_);
return data;
}
Run Code Online (Sandbox Code Playgroud)
所以,我不知道我是否应该让两个辅助函数自由函数或成员函数,并且每个函数都适合.我也不知道是否最好在匿名命名空间中创建它们.有谁知道这样做的好时机?
我有一个名为Point的结构.点非常简单:
struct Point
{
Row row;
Column column;
// some other code for addition and subtraction of points is there too
}
Run Code Online (Sandbox Code Playgroud)
Row并且Column基本上是美化int的,但我厌倦了意外地将输入参数转换为函数并给它们每个包装类.
现在我使用了set一些点,但重复查找确实减慢了速度.我想切换到unordered_set.
所以,我想有一个unordered_set的Point秒.通常,该集合可能包含例如80x24终端上的每个点= 1920点.我需要一个好的哈希函数.我想出了以下内容:
struct PointHash : public std::unary_function<Point, std::size_t>
{
result_type operator()(const argument_type& val) const
{
return val.row.value() * 1000 + val.col.value();
}
};
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这是否真的是一个很好的哈希函数.我想要快速的东西,因为我需要很快进行很多查找.我可以使用更好的哈希函数,还是可以的?
我有一个图像,我想与一些文本内联使用,但我需要它来匹配文本高度.我知道它可能是类似的<img src="img.jpg" height=16>甚至是偶数<img src="img.jpg" height="100%">,但前者不会随着文本大小而缩放,而后者似乎使它成为div的大小,而不是文本高度.有人可以帮忙吗?
示例HTML:
<body>
This is a test <img src="img.jpg">
</body>
Run Code Online (Sandbox Code Playgroud) 有谁知道在MATLAB中是否可以有一堆工作空间?至少可以说非常方便.
我需要这个用于研究.我们有几个脚本以有趣的方式进行交互.函数有局部变量,但没有脚本......
我最近一直在阅读关于C++中DI和IoC的内容.我有点困惑(即使在此处阅读相关问题后),并希望得到一些澄清.
在我看来,熟悉STL和Boost导致使用依赖注入相当多.例如,假设我创建了一个函数,它找到了一系列数字的平均值:
template <typename Iter>
double mean(Iter first, Iter last)
{
double sum = 0;
size_t number = 0;
while (first != last)
{
sum += *(first++);
++number;
}
return sum/number;
};
Run Code Online (Sandbox Code Playgroud)
这是(即使用迭代器而不是访问集合本身)依赖注入?控制倒置?都不是?
让我们看另一个例子.我们有一节课:
class Dice
{
public:
typedef boost::mt19937 Engine;
Dice(int num_dice, Engine& rng) : n_(num_dice), eng_(rng) {}
int roll()
{
int sum = 0;
for (int i = 0; i < num_dice; ++i)
sum += boost::uniform_int<>(1,6)(eng_);
return sum;
}
private:
Engine& eng_;
int n_;
};
Run Code Online (Sandbox Code Playgroud)
这似乎是依赖注入.但是控制倒置了吗?
另外,如果我遗失了某些东西,有人可以帮助我吗?这似乎是做事的自然方式,所以如果这就是依赖注入,为什么人们很难使用它呢?
所以这是我的问题:
struct A
{
enum A_enum
{
E0,
E1,
E2
};
};
struct B
{
typedef A::A_enum B_enum;
bool test(B_enum val)
{
return (val == E1); // error: "E1" undeclared identifier
}
};
Run Code Online (Sandbox Code Playgroud)
我特意不想说A::E1.如果我尝试,B_enum::E1我会收到一个非标准的警告.有没有办法做这样的事情?
如果我通过迭代器更改std :: set的元素,我知道它不是"重新插入"或"求助",但有没有提到它是否触发了未定义的行为?例如,我认为插入会搞砸.有没有具体提到会发生什么?
我知道STL有set_difference,但我需要知道2 sets是否是不相交的.我已经分析了我的代码,这使我的应用程序放慢了很多.有没有一种简单的方法可以看出2套是不相交的,还是我只需要自己编写代码?
编辑:我也试过,set_intersection但它花了相同的时间......