小编NHD*_*aly的帖子

初始化初始化列表中unique_ptrs的容器因GCC 4.7而失败

我试图以一种std::vector<std::unique_ptr<std::string>>Bjarne Stroustrup的C++ 11 FAQ相同的方式初始化一个:

using namespace std;
vector<unique_ptr<string>> vs { new string{"Doug"}, new string{"Adams"} }; // fails
unique_ptr<string> ps { new string{"42"} }; // OK
Run Code Online (Sandbox Code Playgroud)

我看不出这个语法失败的原因.这种初始化容器的方式有问题吗?
编译器错误消息很大; 我找到的相关部分如下:

/usr/lib/gcc-snapshot/lib/gcc/i686-linux-gnu/4.7.0/../../../../include/c++/4.7.0 /bits/stl_construct.h:77 :7:错误:没有匹配的调用函数 'std::unique_ptr<std::basic_string<char> >::unique_ptr(std::basic_string<char>&)'

修复此错误的方法是什么?

c++ compiler-errors initialization c++11

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

std :: back_inserter比std :: inserter有什么好处?

据我所知,任何地方都std::back_inserter可以在STL算法中运行,你可以传递一个std::inserter构造.end()而不是:

std::copy(l.begin(), l.end(), std::back_inserter(dest_list));
std::copy(l.begin(), l.end(), std::inserter(dest_list, dest_list.end()));
Run Code Online (Sandbox Code Playgroud)

并且,不像back_inserter,据我所知,inserter可以为任何STL容器工作!我试了一下成功为std::vector,std::list,std::map,std::unordered_map来这里之前感到惊讶.

我想也许是因为push_back某些结构的速度可能更快insert(.end()),但我不确定......

对于std::list(有道理)似乎并非如此:

// Copying 10,000,000 element-list with std::copy. Did it twice w/ switched order just in case that matters.
Profiling complete (884.666 millis total run-time): inserter(.end())
Profiling complete (643.798 millis total run-time): back_inserter
Profiling complete (644.060 millis total run-time): back_inserter
Profiling complete (623.151 millis total run-time): inserter(.end()) …
Run Code Online (Sandbox Code Playgroud)

c++ containers iterator stl vector

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

使用std :: make_unique的push_back或emplace_back

基于在回答这些 问题 在这里,我知道这肯定是最好使用C++ 14的std::make_unique,而不是emplace_back(new X)直接.

那就是说,打电话是首选

my_vector.push_back(std::make_unique<Foo>("constructor", "args"));
Run Code Online (Sandbox Code Playgroud)

要么

my_vector.emplace_back(std::make_unique<Foo>("constructor", "args"));
Run Code Online (Sandbox Code Playgroud)

也就是说,我应该使用push_backemplace_back何时添加std::unique_ptr构造的std::make_unique

====编辑====

为什么?c:< - (微笑)

c++ stdvector unique-ptr c++11 c++14

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

速记for循环遍历具有值和索引的数组

是否有便捷/简便的方法来遍历数组上的for循环,同时获取值和索引?

基本选项:

i = 1
for file in ["foo.csv", "bar.csv"]
    ...
   i += 1
end
Run Code Online (Sandbox Code Playgroud)
files = ["foo.csv", "bar.csv"]
for i in 1:length(files)
   files[i]
end
Run Code Online (Sandbox Code Playgroud)

julia

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

注册应用程序以从Safari的"共享"或"打开..."对话框中打开不起作用.(虽然从其他应用程序工作)

当用户点击任何html网页上的分享按钮时,我正在尝试注册我的应用程序以显示在Safari的"Open-in ..."对话框中.

我已经在Xcode中的文档类型中添加了public.html(并且public.data有很好的衡量标准)内容类型,如许多答案所示:(请参阅此问题,此问题此Apple文档.)

而且,它似乎工作.如果我在Safari中打开.pdf,我会在顶部显示"在我的应用程序中打开"对话框.我还可以使用其他应用程序中的"open in ..."对话框与My App共享文档.

为了测试它,我按照这个答案中的建议构建了DocInteraction,如果我创建了一个html文件,我的应用程序将显示在共享对话框中.

但是,我的应用程序仍未显示在Safari的共享对话框中.当我在iOS模拟器上的iOS7中运行它时,我只会看到Mail,Twitter和Facebook:

在任何地方都没有My App的迹象!

当我在真正的iOS设备上测试它时也是如此:

悲伤的Safari无法找到我的应用程序

但是,我希望你注意到它似乎有可能!看看上面的截图..很多,微博已经完成了这个壮举.我不知道怎么样,但由于某种原因微博出现在这个列表中,即使我的应用程序没有.

而且你知道,实际上,考虑到有多少应用程序可以打开html页面,这种情况很有意义.这是在我的iOS设备上运行的DocInteraction,试图共享一个html页面:

每个人都想要一些.html动作!

它就是!我的应用!(它实际上被称为"Wulu Podify").但是有很多应用程序渴望.html页面,我想Safari认为提供它们可能有点压倒性.

但是,这仍然引出了一个问题,微博是如何进入这个名单的呢?但是,一些进一步的挖掘似乎表明,实际上微博似乎已经在每一个列表上.

什么不能微博开放?

我不确定他们是如何管理它的,但也许他们会以不同的方式解决这个问题.

微博的"I-will-open-any-document-you-to-me-c'mon-try-it-c'mon"方法可以解决这个问题,但这并不理想.我真的只想打开html页面.

所以.我猜我的问题有三个方面:

  1. 有没有办法让我的应用程序显示在Safari的"Open In ..."对话框中?
  2. 如果没有,我怎样才能实现微博所取得的成就,并在所有对话中出现?
  3. 我应该这样做吗?看起来这可能是一个坏主意.

谢谢你的帮助!我已经有一段时间了!


更新:

所以,实际上,我没有意识到这一点,但我认为微博可能是一个像Facebook和Twitter一样的内置选项.我以为它就在那里,因为我把它安装在我的手机上,但也许它是iOS6的默认设置之一.我这样说是因为当我在iOS6.0模拟器上测试时,我突然看到微博出现在共享屏幕上,即使我绝对没有在我的模拟器上安装它.

所有微博! :( 悲伤的脸.

所以也许没有办法解决这个问题,除非它通过苹果内置到Safari中.

iphone safari objective-c ipad ios

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

julia:推荐的`include`文件方式:顶级文件或嵌套包含的列表?

include您项目的所有文件的推荐方法是什么?

我已经看到许多使用类似结构的示例:include单个顶级文件中的有序语句列表(定义Module应用程序中的"主"文件的文件).

这也似乎是在以下螺纹的结论: https://discourse.julialang.org/t/best-practices-for-structuring-larger-projects/2652?u=nhdaly


然而,Lint.jl似乎对这种项目结构非常不满,抱怨持久性的use of undeclared symbols.

请考虑以下示例:

# --- src/lib1.jl ---
struct MyStruct
    x::Int32
end

# --- src/lib2.jl ---
foo() = MyStruct(3)    # Lint.jl says: E321 MyStruct: use of undeclared symbol

# --- src/MyPackage.jl ---
module MyPackage

include("lib1.jl")
include("lib2.jl")

foo()

end
Run Code Online (Sandbox Code Playgroud)

当然,这段代码可以正常工作,因为MyStructlib2.jl编译之前可以使用.但Lint.jl无法知道.即使使用Atom集成linter,它也会显示相同的错误.

那么最好是lib2.jl include("lib1.jl")而不是top文件中的所有包含吗?或者最好将它们放在两个地方,就像C++标题一样?我没有在任何地方看到这方面的明确建议,如果有人可以提供,我会很高兴!:)


编辑:更改文件名以反映更典型的julia目录结构.

project-structure include julia

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

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

将多个调试器连接到debugee(Java,JPDA)

我一直试图在JPDA的上下文中将两个客户端调试器连接到Debuggee程序失败.这是可能的还是有解决方法来实现它?

我使用eclipse作为IDE(编辑拼写错误).将服务器程序视为打开的Hello World:

System.out.println("I have the String"); //1
System.out.println("You will have to pass through the breakpoints before you shall see");
System.out.println("breakpoints");
System.out.println("before you shall see"); //4
Run Code Online (Sandbox Code Playgroud)

我们可以在第1和第4行放置断点.

第1步:在运行配置中传递给程序的参数:

-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y
Run Code Online (Sandbox Code Playgroud)

(server=y告诉vm表现得像服务器一样,suspend=y暗示prog执行将暂停,直到调试器锁定到它)并运行程序.

第2步:转到Debug as , Debug config ,Remote Java application并创建一个新实例:

Project: Same as before
Connection type: Socket Attach(Socket Attach)
Host:LocalHost
Port:8000
Run Code Online (Sandbox Code Playgroud)

现在,当我调试Prog执行时,在指定的断点处停止.我无法做的是创建这个远程调试器的另一个实例,它可以锁定到服务器(prog 1),当我这样做时,我得到一个拒绝连接.如果有其他人遇到此问题并且是否存在解决方法,请告诉我.谢谢!

谢谢

java eclipse debugging

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

Yosemite上的Xcode 7:XCTest不再编译.mm objective-c ++文件

在OSX Yosemite(.mm10.10.5 )上更新到Xcode 7后,我的XCTest文件现在无法编译.我收到以下错误:

In file included from /Users/.../unit_test.mm:9:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework/Headers/XCTest.h:32:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Security.framework/Headers/SecItem.h:985:49: error: expected ';' after top level declarator
extern const CFStringRef kSecUseAuthenticationUI
                                                ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Security.framework/Headers/SecItem.h:987:54: error: expected ';' after top level declarator
extern const CFStringRef kSecUseAuthenticationContext
                                                     ^
...
Run Code Online (Sandbox Code Playgroud)

它抱怨所有的行看起来像这样:

extern const CFStringRef kSecUseAuthenticationUI
    __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
extern const CFStringRef kSecUseAuthenticationContext
    __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
Run Code Online (Sandbox Code Playgroud)

虽然这些声明没有问题:

extern const CFStringRef kSecUseItemList
    __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_2_0);
Run Code Online (Sandbox Code Playgroud)

看起来更新添加了在OS 10.10上不再使用XCTest编译的__MAC_10_11行和.mm文件.

有没有人知道除了升级到OS 10.11之外的解决方法?

谢谢.

macos xcode objective-c++ osx-yosemite xcode7

5
推荐指数
0
解决办法
248
查看次数

在 Julia 中,从前面还是从后面增长元组的性能更高?

如果我有一个构建元组的递归函数,它在每个函数中通过在元组中附加/添加一个元素来创建一个新元组,是将它朝前还是朝后生长更好?有关系吗?即使它们最终执行相同,它们中的一个在编译器上是否更容易?

以这个愚蠢的函数为例,想象一下我不在乎数字是升序还是降序(因为我总是可以调整调用代码以两种方式工作):

julia> function tuple_one_through_n(n, t=())::Tuple
           if n === 0
               t
           else
               tuple_one_through_n(n-1, (n, t...))
           end
       end
tuple_one_through_n (generic function with 2 methods)

julia> tuple_one_through_n(5)
(1, 2, 3, 4, 5)

Run Code Online (Sandbox Code Playgroud)

有什么理由更喜欢t在之前n或之后喷溅吗?谢谢!

编辑:对于更多上下文:我们添加这样的元组是因为我们实际上将它用作不可变的函数跟踪,并且通过附加创建新元组是线程安全的,因此即使我们生成新任务它也能工作:每个任务都会然后让它自己的堆栈跟踪增长,跟踪所有调用者。

我认为更好的选择可能是PersistentVector来自https://github.com/JuliaCollections/FunctionalCollections.jl/blob/master/README.md的不可变内容,但对于最简单的第一遍,我只是使用元组,而我是想知道是否有任何理由更喜欢一种或另一种订单。:) 因为有些人可能有一个增长元组的有效用例,我想我会问。

tuples julia

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