小编Moe*_*oeb的帖子

如何学习C指针?

我经常使用指针,但是每当我和它们一起工作时,我觉得可能不会像我期望的那样工作.我的头脑不确定他们将如何表现.

你有什么建议?我想更好地学习指针.

c pointers

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

如何考虑简单操作的位操作?

例如:

unsigned int a;    // value to merge in non-masked bits
unsigned int b;    // value to merge in masked bits
unsigned int mask; // 1 where bits from b should be selected; 0 where from a.
unsigned int r;    // result of (a & ~mask) | (b & mask) goes here

r = a ^ ((a ^ b) & mask); 
Run Code Online (Sandbox Code Playgroud)

根据掩码合并来自两个值的位.

[取自这里 ]

在这种情况下,我可以看到它有效,但我不确定逻辑是什么?而且我不确定我是否可以从头开始创建自己的位操作.我该如何开始思考?

c bit-manipulation

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

这不是贬低?

如果我做

double d = 34.56;
int i = (int)d;
Run Code Online (Sandbox Code Playgroud)

我不是"沮丧"吗?

要么

这个术语只用于类和对象吗?


我很困惑,因为在这种情况下,我们从一个更大的double到另一个更小的"向下倾斜" int,但是在课堂上,我们从一个较小的base class到另一个更"低调" derived class.

在某种意义上,这两种惯例是否相反?

c++ conventions downcast

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

在PL/SQL过程中,如何将表名作为参数传递?

CREATE PROCEDURE A(tab IN <table - what should I write here?>) AS
BEGIN
   INSERT INTO tab VALUES(123);
END A;
Run Code Online (Sandbox Code Playgroud)

如何指定参数tab是表名?

sql database plsql stored-procedures

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

如何限制C++ STL向量的元素范围?

vector<int> l; 
for(int i=0;i<10;i++){ 
   l.push_back(i); 
} 
Run Code Online (Sandbox Code Playgroud)

我希望向量只能存储指定范围(或集)中的数字.一般来说,怎么办呢?

特别是,我想限制向量只能存储单个数字.

所以,如果我做了l[9]++(在这种情况下l[9]9),它应该给我一个错误或警告我.(因为10不是一位数字).同样,l[0]--应警告我.

有没有办法使用C++ STL vector

c++ stl vector

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

C++中Mergesort的问题

vector<int>& mergesort(vector<int> &a) {
    if (a.size() == 1) return a;
    int middle = a.size() / 2;
    vector<int>::const_iterator first = a.begin();
    vector<int>::const_iterator mid = a.begin() + (middle - 1);
    vector<int>::const_iterator last = a.end();
    vector<int> ll(first, mid);
    vector<int> rr(mid, last);

    vector<int> l = mergesort(ll);
    vector<int> r = mergesort(rr);
    vector<int> result;
    result.reserve(a.size());
    int dp = 0, lp = 0, rp = 0;

    while (dp < a.size()) {
        if (lp == l.size()) {
            result[dp] = (r[rp]);
            rp++;
        } else if (rp == r.size()) { …
Run Code Online (Sandbox Code Playgroud)

c++ merge mergesort

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

这个C++构造有什么作用?

在某些代码行中,我遇到了这个构造......

//void* v = void* value from an iterator
int i = (int)(long(v))
Run Code Online (Sandbox Code Playgroud)

这个结构有什么可能的用途?

为什么不简单地使用int(v)呢?为什么演员阵容long第一?

c++ casting

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

SQL*Plus是否有相当于更少?

有时,对SQL*Plus的查询可能会在屏幕上产生太多行.

是否有一些相当于"管道到更少/更多"的机制,我可以做导航结果?

select * from emp | less
Run Code Online (Sandbox Code Playgroud)

sql unix sqlplus pipe

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

为什么我的std :: string被转换为std :: basic_string <char>?

错误

stack.cc:53:28: error: no matching function for call to ‘Stack<std::basic_string<char> >::push(std::string)’
stack.cc:53:28: note: candidate is:
stack.cc:32:11: note: Stack<T>& Stack<T>::push(T&) [with T = std::basic_string<char>]
Run Code Online (Sandbox Code Playgroud)

stack.cc

#include<iostream>

template <typename T>
class Stack {
private:
    T* array_;
    int length_;
    T* last_;
    void expandArray();

public:
    Stack(int length = 8) {
        array_   = new T[length];
        length_  = length;
        last_    = array_;
    }

    Stack<T>& push(T&);
    T pop();
};

template<typename T>
void Stack<T>::expandArray() {
    T* array_temp = new T[length_ << 1];
    memcpy(array_temp, array_, length_);
    std::swap(array_, array_temp);
    delete[] …
Run Code Online (Sandbox Code Playgroud)

c++ stack

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

如何编写可控的随机数发生器?

我希望随机数生成可以用变量控制.例如,如果我说100,则应生成具有最大随机性的数字,如果我说50,则数字不应为"随机".如果我说'0',可能随机数根本不应该是随机数 - 也许所有生成的数字都是相同的.

知道我可以用什么来生成像这样的受控随机数?有没有想过是否有一些C++内置库,或者Boost库可以做到这一点?

有一种方法可以重新生成相同的随机数序列,因此种子生成器的方法也会很好.

c++ random boost

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