问题列表 - 第3181页

寻找类似C++ STL的矢量类,但使用堆栈存储

在我写自己之前,我会问你们所有人.

我正在寻找一个几乎完全像STL向量的C++类,但是将数据存储到堆栈中的数组中.某种类型的STL分配器类也可以工作,但我试图避免任何类型的堆,甚至是静态分配的每线程堆(尽管其中一个是我的第二选择).堆栈效率更高.

它需要几乎替代使用向量的当前代码.

对于我自己要写的东西,我在考虑这样的事情:

char buffer[4096];
stack_vector<match_item> matches(buffer, sizeof(buffer));
Run Code Online (Sandbox Code Playgroud)

或者类可以在内部分配缓冲区空间.然后它看起来像:

stack_vector<match_item, 256> matches;
Run Code Online (Sandbox Code Playgroud)

我认为如果空间不足,它会抛出std :: bad_alloc,尽管这不应该发生.

更新

使用Chromium的stack_container.h效果很好!

我之所以没想过这样做的原因是我总是忽略了STL集合构造函数的allocator对象参数.我已经使用了几次模板参数来做静态池,但是我从未见过代码或编写任何实际使用过对象参数的代码.我学到了新东西.很酷!

代码有点乱,由于某种原因,GCC强迫我将分配器声明为实际项而不是将其构造为vector的allocator参数.它来自这样的事情:

typedef std::pair< const char *, const char * > comp_list_item;
typedef std::vector< comp_list_item > comp_list_type;

comp_list_type match_list;
match_list.reserve(32);
Run Code Online (Sandbox Code Playgroud)

对此:

static const size_t comp_list_alloc_size = 128;
typedef std::pair< const char *, const char * > comp_list_item;
typedef StackAllocator< comp_list_item, comp_list_alloc_size > comp_list_alloc_type;
typedef std::vector< comp_list_item, comp_list_alloc_type > comp_list_type;

comp_list_alloc_type::Source match_list_buffer;
comp_list_alloc_type match_list_alloc( &match_list_buffer );
comp_list_type match_list( match_list_alloc );
match_list.reserve( comp_list_alloc_size ); …
Run Code Online (Sandbox Code Playgroud)

c++ stl vector data-structures

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

从最小化恢复WindowState

有没有一种简单的方法可以将最小化的形式恢复到以前的状态,正常还是最大化?我期待与单击任务栏相同的功能(或右键单击并选择还原).

到目前为止,我有这个,但如果表单以前最大化,它仍然作为一个普通窗口返回.

if (docView.WindowState == FormWindowState.Minimized)
    docView.WindowState = FormWindowState.Normal;
Run Code Online (Sandbox Code Playgroud)

我是否必须处理表单中的状态更改以记住以前的状态?

winforms

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

访问查询到没有列名的txt文件.

我有这产生一些输出,3列名为例如接入查询,,和Ç.

我想创建一个函数,我可以自动将此查询输出到没有标题行的文本文件.我目前正在将文件输出到excel,然后打开文件并删除第一行.然后,用户必须从excel转换为文本.

ms-access export

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

在VB.NET中获取.NET Framework版本

有人知道我的网络应用程序运行的.Net版本<%= %>Response.Write()代码?

.net vb.net version

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

jQuery UI:加载HTML标记的最佳方式?

为自定义jQuery UI小部件加载HTML标记的最佳方法是什么?

到目前为止,我已经看到使用字符串(即$(...).wrap('<div></div>'))创建的元素,这对于简单的事情来说很好.但是,这使得以后修改更复杂的元素非常困难.

这似乎是一个相当普遍的问题,但我也知道jQuery UI库是新的,可能没有广泛接受的解决方案.有任何想法吗?

javascript jquery jquery-ui jquery-ui-plugins

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

HTML到Excel:如何告诉Excel将列视为数字?

在Excel中打开HTML时,我需要实现以下功能(Response.contentType="application/vnd.ms-excel"):

  • 强制Excel将td单元格的内容视为数字
  • 进行上述操作,以便后续用户输入的公式适用于这些单元格(打开电子表格时)

到目前为止,我成功地添加style="vnd.ms-excel.numberformat:0.00"了相关的td细胞.当我在Excel中右键单击它们时,单元格的内容正确显示为数字,但公式不起作用.

如果成功,该技术将非常有用,因为任何Web Excel报告都可以根据自定义要求使用适当的公式进行用户增强.提前致谢.

html excel formatting numbers formulas

20
推荐指数
3
解决办法
4万
查看次数

确定路径字符串是本地计算机还是远程计算机的方法

使用C#或其他.NET语言确定文件路径字符串是在本地计算机还是远程服务器上的最佳方法是什么?

可以使用以下内容确定路径字符串是否为UNC:

new Uri(path).IsUnc
Run Code Online (Sandbox Code Playgroud)

这适用于以C:\或其他驱动器号开头的路径,但是路径如下:

\\machinename\sharename\directory
\\10.12.34.56\sharename\directory
Run Code Online (Sandbox Code Playgroud)

...两者都引用本地机器 - 这些是UNC路径但仍然是本地路径.

.net c# uri unc

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

有没有办法将宽屏显示器分成两个或多个虚拟显示器?

像大多数开发人员一样,我已经爱上了双显示器.我不会完全理解他们的善良; 把它作为给定的.

但是,它们并不完美.你似乎永远不会把它们排成一行"恰到好处".你总是以轻微有趣的角度使用显示器.当然挡板总是挡住了.这是相同的显示器.不同的显示器问题更严重 - VMWare的多显示器功能甚至不能用于不同分辨率的显示器.

当您使用多个监视器时,其中一个成为您关注的主要监视器.您的焦点可能会从一台显示器转移到另一台显示器,但在任何时候您通常只关注一台显示器.这有例外(WinDiff,Excel),但通常就是这种情况.我建议拥有一台具有多个小型显示器所有优点的大型显示器将是一个更好的解决方案.

宽屏显示器非常棒,但很难有效地利用所有空间.如果您正在编写代码,则通常在窗口的左侧工作.如果在宽屏显示器上最大化编辑器,窗口的右侧将是白色的海洋.像WinSplit Revolution这样的程序将有助于组织你的窗口,但这只是解决症状,而不是问题.即使使用WinSplit Revolution,当您最大化窗口时,它也会占据整个屏幕.您无法将窗口锁定到屏幕的特定部分.

这是虚拟监视器的用武之地.

真正好看的是位于现有驱动程序之上的视频驱动程序,但允许将单个监视器虚拟化为多个监视器.控制面板会将您的单个物理监视器视为两个或更多虚拟监视器.该软件甚至可以支持虚拟边框来强调正在发生的事情,或者您可以选择无缝模式.像WinSplit Revolution和UltraMon这样的程序仍然有效.此虚拟视频驱动程序允许您将物理监视器切片并切割成任意数量的虚拟监视器.

有谁知道这样的软件是否存在?如果没有,是否有任何萌芽的Windows显示驱动程序大师愿意接受挑战?

我没有追踪可用的无数虚拟桌面/窗口管理器程序.我对这些程序感到沮丧.它们起初看起来很好,但它们通常有一些奇怪的行为,并且与其他程序(例如WinSplit Revolution)不兼容.

我想要真实的东西!

multiple-monitors

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

防止默认目录的自动更改

根据Emacs文档,每次打开文件时,Emacs都会更改default-directory为包含该文件的目录.

然后,如果光标位于该缓冲区中并且您(例如)启动SLIME,则它将default-directory用作SLIME 的当前工作目录.如果您尝试打开一个新文件,它将打开文件default-directory作为起点.

我希望能够M-x cd或以其他方式cd访问目录,然后永远不会让Emacs将我当前的工作目录更改为除该目录之外的任何内容,直到我告诉它.我希望它在所有缓冲区中都是全局的,所以无论何时我正在做涉及当前工作目录的事情,我都知道它的设置是什么,无论我的光标在哪里.有没有办法做到这一点?

emacs

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

"代理类需要WebServiceBindingAttribute"

我正在开发一个对WebService进行异步调用的应用程序.

我添加了一个代理类来进行异步调用.代码编译并正常运行,但每当我尝试双击解决方案资源管理器中的代理类(Visual Studio 2008)时,我会看到一个页面

要在加载设计器之前防止可能的数据丢失,必须解决以下错误:代理类需要WebServiceBindingAttribute.

我的代理类已经这样定义了

namespace AsyncCaller
{
    [WebServiceBindingAttribute(Name = "AsyncRequestSoap", Namespace = "http://tempuri.org/")]
    public class AsyncCallerProxy : SoapHttpClientProtocol
    {
        public AsyncCallerProxy()
        {
            this.Url = "http://localhost/MyAsyncService/AsyncService.asmx";
        }
Run Code Online (Sandbox Code Playgroud)

所以我看不出错误的原因.

这是一个非常小的问题,因为我仍然可以运行该应用程序,但我很好奇.

web-services visual-studio-2008

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