查看完整版本: 練習vector遇到的問題
頁: [1]

weirdococo 發表於 2017-4-22 09:06 PM

練習vector遇到的問題

最近在練習使用vector,
然後想要把vector當作一個大數字來用,像是{ 0x10, 0x00, 0x00, 0x00 }就是數字1000_0000,
在製作他的operator的時候遇到的不少問題,像是比大小,用perl來寫大概長這樣:
my @listOne = (^10).roll(5);
my @listTwo = (^10).roll(5);

sub testTwoEquSizeArray( @one, @two ) {
    for ( @one Z- @two  ) {
      if ($_ > 0) {
        return "one is bigger";
      }
      if ($_ < 0) {
        return "two is bigger";
      }
    }
    return "the same";
}
say &testTwoEquSizeArray(@listOne, @listTwo);
問題是在C語言裡面沒有ZIP functon、map、filter、reduce這類的東西,有沒有替代方法??

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

ren1244 發表於 2017-4-23 10:26 AM

不知道您是否有C++的書?
感覺一些基本的東西好像需要看一下
也許看過之後,會比較清楚
因為雖然程式的邏輯相近,但是也是有一些特性上的不同
(例如迴圈)#include <vector>
#include <iostream>

int compare(const std::vector<int> &a,const std::vector<int> &b)
{
        int i;
        if(a.size()!=b.size())
                return a.size()-b.size();
        for(i=a.size()-1;i>=0 && a==b;--i);
        return i>=0?a-b:0;
}

int main()
{
        std::vector<int> one,two;
        //init one and two here...
        int cmp=compare(one,two);
        std::cout<<(cmp!=0?(cmp>0?"one is bigger":"two is bigger"):"the same");
        return 0;
}...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

weirdococo 發表於 2017-4-23 11:58 AM

本帖最後由 weirdococo 於 2017-4-23 01:19 PM 編輯

ren1244 發表於 2017-4-23 10:26 AM static/image/common/back.gif
不知道您是否有C++的書?
感覺一些基本的東西好像需要看一下
也許看過之後,會比較清楚

我竟然忘了基本的for迴圈,可能是我對基本的for迴圈太不熟悉,常用的語言都是Range-based for,所以腦袋轉不過來(其實外在寫C++也適用C11的Range-based for),沒有錯,基礎不好,所以我馬上去網路訂了一本 c++ primer plus,其實最主為的是我想程式的邏輯大都是ruby或是perl,然後再轉換成C++,不知道怎麼轉的去stack overflow查,這樣說學習不如說是使用,也不會了解C語言的精隨,是該好好的學一下C語言了!...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

o_g349 發表於 2017-9-14 01:57 PM

weirdococo 發表於 2017-4-23 11:58 AM static/image/common/back.gif
我竟然忘了基本的for迴圈,可能是我對基本的for迴圈太不熟悉,常用的語言都是Range-based for,所以腦袋轉 ...

C 的話是用 for 沒錯,C++ 的話有你說的 range 的函數可以使用,像是 <algorithm> 標頭檔裡的 for_each() 函數或是 copy_if() 函數,C++ 裡的 for 和 range 這兩種都有人在用...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]