小编tin*_*lyx的帖子

如何遍历经典ASP中的集合?

我希望能够做到:

For Each thing In things
End For
Run Code Online (Sandbox Code Playgroud)

经典ASP - 不是.NET!

vbscript asp-classic

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

c ++ 11可变参数编程,如何定义矢量塔

如何(如果可能的话)我可以使用c ++ 11可变参数编程来定义vector函数体中的一系列函数(或者换句话说,一个N具有递减N的s 的序列直到0),如下面的变量?

vector<vector<vector<int>>> v<3>;
vector<vector<int>> v<2>;
vector<int> v<1>;
int v<0>;
Run Code Online (Sandbox Code Playgroud)

我想象的是:

#include <iostream>
#include <vector>
using namespace std;

template<int ...> struct seq {};
template<int N, int ...S> struct gens : gens<N-1, N-1, S...> {};
template<int ...S> struct gens<0, S...>{ typedef seq<S...> type; };

template<int ...S>
void f(seq<S...>) {
  //how do I write definitions of v<N> here?
  vector<vector<...(N layers)<vector<int> ...> v<N>;     //??how-to, not valid c++
  vector<vector<...(N -1 layers)<vector<int> ...> v<N-1>;//??how-to, not valid c++ …
Run Code Online (Sandbox Code Playgroud)

c++ templates metaprogramming c++11 c++14

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

什么是c ++ 11/1y lambda函数的类型签名?

我想知道是否有一种标准方法来获取任何给定lambda的参数的类型签名(即返回类型和类型)?

我问的原因是我一直想知道auto声明中的类型究竟是什么样的auto l =[](int x,int y)->int{return x+y;}.在其他用例中auto,对于较长的类型名称而言,它是一种便利和更短的替代方案.但是对于lambdas,是否有另一种方法来声明lambda变量?

我的理解是标准lambda只不过是一个函数对象,它是它自己的类型.因此,即使两个lambda具有相同的返回类型和参数类型,它们仍然是两个不同的,不相关的类/仿函数.但是有一种方法可以捕捉它们在类型签名方面相同的事实吗?

我认为我正在寻找的类型签名可能类似于std::function<>正确类型的对象.

更有用/涉及的问题是,如果可以提取类型签名,则可以编写一般包装函数将任何lambda函数转换std::function为相同类型签名的对象.

c++ lambda c++11

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

是否可以允许一个std :: function类型接受具有不同签名的lambdas

我有一个更高阶的函数map,类似于STL for_each,并将一个std::function对象映射vector到一些东西上.

template<class T, class U>
vector<U> map(function<U (T)> f, vector<T> xs) {
  vector<U> ret;
  for (auto &x: xs)
    ret.push_back(f(x));
  return ret;
}
Run Code Online (Sandbox Code Playgroud)

现在,我想有这样的高阶功能拍摄的类型两个对象function<int (const vector<T>&)>function<int (vector<T>)>,如所附小例子.

问题是,function<int (const vector<T>&)>并且 function<int (vector<T>)>似乎可以相互转换(请参阅headhead2),但map不会采用const引用版本function<int (const vector<int>&)>(请参阅参考资料Q1).

可以map通过显式转换(Q2)来接受const引用版本,但这很麻烦.

我想知道,一般来说,是否可以编写一个deref删除const引用的函数function<int (const vector<T>&)>并返回一个function<int (vector<T>)>

(如果可以,那么我将不必为const refs编写两个相同的重载/ map实现).

谢谢.

#include <vector>
#include …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 std-function

13
推荐指数
2
解决办法
1405
查看次数

如何在gcc错误消息中隐藏默认模板参数?

读取g ++生成的错误消息通常很痛苦,因为gcc扩展名称就像

std::ostream
Run Code Online (Sandbox Code Playgroud)

在我的代码中变成了更长的形式

std::basic_ostream<char, std::char_traits<char> >
Run Code Online (Sandbox Code Playgroud)

在错误消息中.同样,gcc扩展std::stringstd::basic_string<char>.我没有看到这种扩展有任何好处,只是让我很难将错误消息和错误站点联系起来.

我想知道是否有可能告诉gcc禁用此扩展行为并使用带有默认模板参数的较短名称?

还有一个相关的问题在这里似乎是约不显示在所有长扩展名.我在这里问是否可以只显示我在代码中使用的短名称.那里的答案也没有解决问题.

c++ gcc templates

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

线程返回线程池后是否清除ThreadLocal对象?

ThreadLocal执行期间存储在存储中的内容是否会在线程返回ThreadPool时自动清除(如预期的那样)?

在我的应用程序中,我ThreadLocal在一些执行期间放入一些数据,但如果下次使用相同的Thread,那么我在ThreadLocal存储中找到过时的数据.

java multithreading thread-local threadpool

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

如何在Coq中切换当前目标?

是否可以切换当前目标或子目标以在Coq中证明?

例如,我有一个这样的目标(来自eexists):

______________________________________(1/1)
?s > 0 /\ r1 * (r1 + s1) + ?s = r3 * (r3 + s2)
Run Code Online (Sandbox Code Playgroud)

我想要做的是首先split证明合适的合并.我认为这将给出存在变量的值?s,而左合并应该只是一个简化.

split默认情况下,将左合并设置?s > 0为当前目标.

______________________________________(1/2)
?s > 0
______________________________________(2/2)
r1 * (r1 + s1) + ?s = r3 * (r3 + s2)
Run Code Online (Sandbox Code Playgroud)

我知道我可以在战术2:上加上第二个子目标的操作,但这很尴尬因为

1)我看不到目标#2和.的假设

2)如果它处于不同的上下文中,目标#2可能是第三个或第k个目标.证明不可移植.

这就是为什么我想把第二个目标设定为当前目标.

顺便说一下,我正在使用CoqIDE(8.5).

coq coq-tactic

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

Ag-Grid:数字格式,例如:123456.78到123,457

我有大量的数字数据.这需要以逗号分隔值的形式呈现.对于Ex. 使用Ag-Grid 123456.78渲染123,457.请帮助我实现这一目标.

ag-grid

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

为什么std :: sort和partial_sort需要随机访问迭代器?

我想知道为什么c ++标准要求std::sort只应该采用随机访问迭代器?我没有看到优势,因为std :: sortstd :: list :: sort都有复杂性N*log(N).限制std::sort随机访问迭代器(RAI)似乎已经使得必须为具有相同复杂性的列表编写单独的函数.

这同样适用于partial_sort,直到今天根本没有列出非RAI对应部分的部分.

这个设计是因为人们使用历史quick_sort实现的变体std::sort吗?

如果在RAI容器上编写排序算法是有好处的,那么更好地制作std::sort更通用的,并让RAI容器std::vector提供专门的v.sort吗?

c++ sorting complexity-theory c++-standard-library

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

如何强制g ++内联函数?

在使用Haskell FFI到C/C++时,我最近遇到了C++内联函数的问题.也就是说,g ++并不真正内联声明的函数inline,并为它们生成符号.最终,当ghci尝试加载调用内联函数的目标文件时,这会生成链接器错误:

Loading object (static) solveeq.o ... done
Loading object (dynamic) /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so ... done
final link ... ghc: solveeq.o: unknown symbol `_ZN5Eigen8internal19throw_std_bad_allocEv'
Run Code Online (Sandbox Code Playgroud)

这里,_ZN5Eigen8internal19throw_std_bad_allocEvinline仅在标题的Eigen C++库中的函数,以某种方式被视为实函数并给出了链接器符号.solveeq.o是我的目标文件,它对该函数进行(间接)调用.环境是Ubuntu 12.04 64bit,ghc 7.4.1.

问题是这样的:我可以extern "C" 用来阻止C++为我自己的函数装饰函数名.但我不能/不应该更改其他人定义的C++标头(原因很明显).在我看来,编译器不应该首先为此内联定义创建一个函数来导致此错误.原因很简单.如果有问题的函数是真正内联的,我不会得到链接器错误.如果编译器变得聪明并决定为它创建一个真正的函数,我会得到这样的错误(或者我在其他地方读到的同一函数的多个定义).所以现在,编译/链接的正确性取决于编译器的情绪.

此外,我认为像这样的链接器问题实际上会破坏仅限标头的C++库(它们具有吸引力),因为现在无法使用它们进行导出extern "C".

这是c ++的设计问题还是仅仅是一个g ++问题?我的问题是,有没有办法阻止c ++编译器或g ++不内联内联函数?例如,是否有一个命令行选项?(修改源代码是不可能的,因为它们是库代码.)

另外,我很好奇C++ STL是如何处理这个问题的.它们也只是标题吗?

c++ haskell inline ffi ghci

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