小编JSB*_*ոգչ的帖子

Vim脚本:在函数调用中保留光标位置和屏幕视图

我有一些Vim函数可以更改文档格式.当我调用此函数时,我目前使用类似以下内容来保存和恢复我的光标位置:

func! Foo()
  :norm mz
  ...
  :norm `z
endf
Run Code Online (Sandbox Code Playgroud)

这样可以正确地保存光标位置,但有时会改变窗口位置,以便当前行从靠近屏幕顶部移动到靠近底部,反之亦然.有没有办法保留光标位置和线的屏幕位置?

vim

22
推荐指数
3
解决办法
4500
查看次数

Vim命令在正常模式下插入空行

在Vim中是否有任何与oor 相同的命令O(在当前的一个之前/之后插入一个空行),但是它也没有切换到插入模式?

vim insert

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

如何一次迭代两个数组?

我在解析文本文件时构建了两个数组.第一个包含列名,第二个包含当前行的值.我需要一次迭代两个列表来构建一个地图.现在我有以下内容:

var currentValues = currentRow.Split(separatorChar);
var valueEnumerator = currentValues.GetEnumerator();

foreach (String column in columnList)
{
    valueEnumerator.MoveNext();
    valueMap.Add(column, (String)valueEnumerator.Current);
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但它并不能完全满足我的优雅感,如果阵列的数量大于2,它会变得非常毛茸茸(我偶尔也会这样做).有没有人有另一个更高级的成语?

c# iterator enumerator

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

Linux套接字缓冲区是如何溢出的?

我有一个Java阅读器应用程序,它从Linux 64位平台(2.6.18)上的多播套接字读取.套接字大小已设置为2 MB.当读取器无法快速读取时,套接字"溢出",即从缓冲区中丢弃数据包.

我想知道的是Linux内核如何将数据包从套接字缓冲区中删除.我假设套接字缓冲区本身是FIFO缓冲区.但是,如果它已满,会发生什么?是否会丢弃下一个数据包(缓冲区内容不会改变)?或者新数据包会替换缓冲区中的旧数据包吗?如果是,哪个数据包(最老的?,最年轻的?,一个随机选择的数据包?)?

感谢您的任何见解.

sockets linux networking linux-kernel

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

如何避免在返回值中将数据打印到stdout?

在进行一些Powershell自动化时,我遇到了.cmd自动捕获文件写入stdout的数据的问题.我有两个函数可以执行以下操作:

function a {
    & external.cmd # prints "foo"
    return "bar"
}

function b {
    $val = a
    echo $val # prints "foobar", rather than just "bar"
}
Run Code Online (Sandbox Code Playgroud)

基本上,external.cmd发送到stdout的数据被添加到返回值a,即使我真正想要返回的a是我指定的字符串.我怎么能阻止这个?

powershell stdout return-value

13
推荐指数
3
解决办法
7418
查看次数

STL count_if的标准谓词

我正在使用STL函数count_if来计算双精度矢量中的所有正值.例如,我的代码是这样的:

 vector<double> Array(1,1.0)

 Array.push_back(-1.0);
 Array.push_back(1.0);  

 cout << count_if(Array.begin(), Array.end(), isPositive);
Run Code Online (Sandbox Code Playgroud)

其中函数isPositive定义为

 bool isPositive(double x) 
 {
     return (x>0); 
 }
Run Code Online (Sandbox Code Playgroud)

下面的代码将返回2.有没有办法在不写我自己的函数isPositive的情况下执行上述操作?我可以使用内置功能吗?

谢谢!

c++ stl vector

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

用于安全整数转换的C++模板

我正在尝试编写一个C++模板函数,它将在不同整数类型之间的转换中抛出整数溢出的运行时异常,具有不同的宽度,以及可能的有符号/无符号不匹配.出于这些目的,我不关心从浮点类型转换为整数类型,也不关心其他对象到对象的转换.我想这样做而不必写很多特殊的案例代码.这就是我目前拥有的:

template< typename T, typename R > void safe_cast( const T& source, R& result )
{
    // get the maximum safe value of type R
    R rMax = (R) ~0;
    if ( rMax < 0 ) // R is a signed type
    {
        // assume that we're on an 8-bit twos-compliment machine
        rMax = ~( 0x80 << ( ( sizeof( R ) - 1 ) * 8 ) );
    }

    if ( ( source & rMax  ) != source ) …
Run Code Online (Sandbox Code Playgroud)

c++ templates casting integer-overflow

11
推荐指数
4
解决办法
6585
查看次数

多个线程可以访问不同位置的向量吗?

假设我有一个int向量,我已经预先填充了100个元素,值为0.

然后我创建2个线程并告诉第一个线程用数字填充元素0到49,然后告诉线程2用数字填充元素50到99.可以这样做吗?否则,实现这一目标的最佳方法是什么?

谢谢

c c++ multithreading

11
推荐指数
2
解决办法
6764
查看次数

为什么.NET没有双向枚举器?

关于如何实现双向枚举器(这里,这里)的问题已被问过几次.我的问题不是如何(对于大多数情况来说这是微不足道的),但为什么 .NET平台中不存在这样的类型.

public interface IBidirectionalEnumerator<T> : IEnumerator<T>
{
    bool MovePrev();
}
Run Code Online (Sandbox Code Playgroud)

显然,有许多集合类型无法实现这一点,因为它MoveNext()是破坏性的或改变底层集合的状态.但反过来,很多类型可以平凡实现这一点(List,IList,LinkedList,array).

为什么不存在这种类型?

.net c# ienumerator enumerators

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

C#:需要实现两个接口的参数的函数的首选模式

我的函数的参数f()必须实现两个不同的接口,这些接口通过继承彼此无关,IFoo并且IBar.我知道有两种不同的做法.第一种是声明一个从两者继承的空接口:

public interface IFooBar : IFoo, IBar
{
    // nothing to see here
}

public int f(IFooBar arg)
{
    // etc.
}
Run Code Online (Sandbox Code Playgroud)

这,当然,要求班宣布自己执行IFooBar,而不是IFooIBar独立.

第二种方法是f()使用约束制作泛型:

public int f<T>(T arg) where T : IFoo, IBar
{
    // etc.
}
Run Code Online (Sandbox Code Playgroud)

您更喜欢哪一个,为什么?每个都有任何非明显的优点或缺点吗?

c# generics interface

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