小编Ole*_*leg的帖子

viewDidLoad中的帧大小错误

可能重复:
为什么我必须在viewDidLoad中手动设置视图的框架?

我有iphone和ipad的通用应用程序,两个故事板,如果我在iphone模拟器上运行我的应用程序viewDidLoad在nib中的每个元素的每个帧是正确的.但是,如果我为ipad(模拟器)在框架中做它为零,但屏幕看起来正确.你能告诉我什么吗?谢谢.

storyboard nib ipad ios ios-simulator

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

如何比较两个向量是否相等?

我有以下程序:

std::vector<int> nums = {1, 2, 3, 4, 5};
std::vector<int> nums2 = {5, 4, 3, 2, 1};

bool equal = std::equal(nums.begin(), nums.end(), nums2.begin());
if (equal)
{
    cout << "Both vectors are equal" << endl;
}
Run Code Online (Sandbox Code Playgroud)

有两个向量具有相同的元素。std::equal 函数在这里不起作用,因为它按顺序进行并比较相应的元素。有没有一种方法可以检查这两个向量是否相等,并且在我的情况下无需排序即可获得 true ?在真实的例子中,我没有整数,而是作为指针相等进行比较的自定义对象。

c++ algorithm stl

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

Can't use pointer as a default template parameter

I am trying to use default raw pointer as a default template parameter. I read that non type template parameters are restricted to integral types, enums, pointers and references. With references I had no issues, but when I tried to use pointer I am facing such error:

error: non-type template argument of type 'Engine *' is not a constant expression.
Run Code Online (Sandbox Code Playgroud)

Here is my code:

#include <iostream>
#include <memory>

using std::cout;
using std::endl;

class Engine
{
public:
    void startEngine()
    {
        m_started …
Run Code Online (Sandbox Code Playgroud)

c++ templates pointers

4
推荐指数
1
解决办法
91
查看次数

在向量中查找weak_ptr

我试图在向量中找到weak_ptr。我使用 lambda 表达式作为第三个参数来查找,但我无法理解为什么此代码未编译:

std::vector<std::weak_ptr<Car>> cars;

std::shared_ptr<Car> lambo = std::make_shared<Car>();
std::weak_ptr<Car> wPtr(lambo);
cars.emplace_back(lambo);

const auto pos = std::find(cars.begin(), cars.end(), [&wPtr](const std::weak_ptr<Car>& ptr1) {
    return ptr1.lock() == wPtr.lock();
});

if (pos != cars.end())
    cout << "Not found!" << endl;
Run Code Online (Sandbox Code Playgroud)

也许有人可以指出我做错了什么。提前致谢。

c++ weak-references smart-pointers find

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

使用CLANG内联汇编创建C ++预增量操作

我正在尝试b = ++a;与内联汇编等效,但是执行代码后,变量中却得到了奇怪的值。我正在使用clang ++(与g ++兼容)来编译内联汇编。这是到目前为止我得到的:

#include <iostream>

using std::endl;
using std::cout;

int main()
{
    uint64_t a = 0;
    uint64_t b = 0;

    asm volatile(
    "pushq %%rbp;"
    "movq %%rsp, %%rbp;"
    "movl $0, -4(%%rbp);"
    "movl $0, -8(%%rbp);"
    "addq $1, -4(%%rbp);"
    "mov -4(%%rbp), %%rax;"
    "mov %%rax, -8(%%rbp);"
    "mov -4(%%rbp), %0;"
    "mov -8(%%rbp), %1;"
    "movq %%rbp, %%rsp;"
    "popq %%rbp"
    :"=r" (a), "=r" (b)
    :
    :"%rax", "%rbp", "%rsp"
    );
    cout << "a = " << a << ", b = " << b …
Run Code Online (Sandbox Code Playgroud)

c++ x86 x86-64 inline-assembly clang++

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

展开堆栈后,不会删除智能指针中的对象

我编写了一个小程序,以检查异常情况下创建shared_ptrvia newmake_shared()函数之间的区别。我到处都读到,通过make_shared()它是异常安全的。

但是,这两种情况的有趣之处在于,两种情况下的析构函数都不会在堆栈展开后调用?我错过了什么吗?提前致谢。

#include <iostream>
#include <memory>

class Car
{
public:
    Car() { cout << "Car constructor!" << endl; throw std::runtime_error("Oops"); }
    ~Car() { cout << "Car destructor!" << endl; }
};

void doProcessing()
{
//    std::shared_ptr<Car> sp(new Car());
    std::shared_ptr<Car> sp2 = std::make_shared<Car>();
}

int main()
{
    try
    {
        doProcessing();
    }
    catch(...)
    {
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ exception smart-pointers shared-ptr

0
推荐指数
1
解决办法
122
查看次数