小编Aru*_*pal的帖子

模板参数推导/替换失败

我想实现一个容器,它可以通过为构造函数提供值序列来接受元素的初始列表.

  9 template <typename C, int max>
 10 struct c_array
 11 {
 12     typedef C value_type;
 13 
 14     typedef C* iterator;
 15     typedef const C* const_iterator;
 16 
 17     typedef C& reference;
 18     typedef const C& const_reference;
 19 
 20     c_array() { }
 21     template <class T>
 22         c_array(typename T::iterator begin,typename T::iterator end)
 23         {
 24         }
 25 
 26     C v[max];
 27     operator C*() { return v; }
 28 
 29     reference operator[] (ptrdiff_t i) { return v[i]; }
 30     const_reference operator[] (ptrdiff_t …
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

预增量不按预期工作

我试图通过在线解决一些问题来学习动态编程.我遇到的一个问题需要处理以下输入

4 10 3 4 4 5 6 7 5 7

项目数量的第一个点,第二个总容量和四个中的其余点(成对)现在应该指向值和容量.

我遇到的问题是解析它的代码.

#include<iostream>
#include<map>
#include<iterator>
using namespace std;

template<typename T>
void print(typename T::const_iterator start,
           typename T::const_iterator end)
{
    typename T::const_iterator itr=start;
    while(itr!=end)
    {
        std::cout << itr->first << " " << itr->second << std::endl;
        itr++;
    }
}

int main()
{
    int _M_N; // total numbers
    int _M_V; // total values
    std::map<int,int> _M_Values; 

    istream_iterator<int> isi(cin); 
    _M_N = *isi;
    _M_V = *++isi;

    for(int i=0;i<_M_N;i++)
    {
        //int m=*++isi,n=*++isi;
        //_M_Values.insert(make_pair(m,n));
        _M_Values.insert(make_pair(*++isi,*++isi)); 
    }
    print<std::map<int,int> >(_M_Values.begin(),_M_Values.end()); …
Run Code Online (Sandbox Code Playgroud)

c++ pre-increment

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

在always块中实例化一个模块

我刚刚开始学习verilog,所以这可能是一个非常基本的问题,但我无法理解或找到另一种方法来表达我在verilog中的意图.

我将采取一个较小的例子.我基本上试图将我的一个模块的输出连接到另一个模块的输入.请帮我标记49号线并替代它.

   25 module ands (
   26     input1,
   27     input2,
   28     outputs
   29 );
   30     input [2:0] input1;
   31     input input2;
   32     output [2:0] outputs;
   33 
   34     integer itr;
   35 
   36     and a (outputs[0],input1[0],input2);
   37     initial
   38     begin
   39         for (itr = 1 ; itr <= 2; itr = itr+1)
   40             and a(outputs[itr],input1[itr],outputs[itr-1]);
   41     end
   42 
   43 endmodule
Run Code Online (Sandbox Code Playgroud)

我知道这是一个愚蠢的例子,我可以很容易地避免使用for循环,但我想稍后使用参数.

谢谢,对不起,如果它太基本了.

verilog

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

不了解编译器的行为

我想了解为什么下面的代码实际工作,而不是给出一个seg错误.我有一位同事告诉我这件事,我感到很惊讶.

有人可以解释并指出一些良好的链接,以弥合我对此的理解吗?

struct Test {
    int __in;
    int __in1;
};

int main()
{
    struct Test* t = NULL;
    int i = &(t->__in1) + 4;
    std::cout << i << std::endl;
}

arun@arun-desktop:~/Code$ g++ -fpermissive -g test8.cc 
test8.cc: In function ‘int main()’:
test8.cc:11:24: warning: invalid conversion from ‘int*’ to ‘int’ [-fpermissive]
arun@arun-desktop:~/Code$ ./a.out   
20
arun@arun-desktop:~/Code$ 
Run Code Online (Sandbox Code Playgroud)

c++ gcc pointers

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

标签 统计

c++ ×3

gcc ×1

pointers ×1

pre-increment ×1

templates ×1

verilog ×1