關於C++中用new申請動態陣列的初始化的兩種方式
在C++11中引進了這一新功能,即用new申請動態陣列時可以直接初始化,形式如下:int* p = new int[cnt]();其中cnt長度和int型別都可以自己定義。
我發現的問題是:
在VC編譯器中使用int* p = new int[cnt]();和int* p = new int[cnt]{};兩種方式都可以,而且可以用int* a = new int[10] { 1,2,3,4,5,6,7,8,9,10 };這個方式給每個成員賦值。
而用mingw,也就是g++編譯器時,不支援int* p = new int[cnt]{};提示的錯誤是“extended initializer lists only available with -std=c++0x or -std=gnu++0x”。
也就是說{}是()的一種擴充套件方式,最好統一用(),避免掉坑。
同時這種初始化方式是C11的新特性,需要確認你的GCC編譯器支援C11特性。
相關推薦
關於C++中用new申請動態陣列的初始化的兩種方式
在C++11中引進了這一新功能,即用new申請動態陣列時可以直接初始化,形式如下:int* p = new int[cnt]();其中cnt長度和int型別都可以自己定義。 我發現的問題是: 在VC編譯器中使用int* p = new int[cnt]();和int* p
陣列的初始化兩種方式?初始化常見錯誤
陣列是儲存同一種資料型別多個元素的集合。 a:動態初始化 只指定長度,由系統給出初始化值 格式: * 資料型別[] 陣列名 = new 資料型別[陣列長度]; * int[] arr = new int[5]; b:靜態
WCF中的ServiceHost初始化兩種方式
wcf pre res body BE world typeof OS words 1 代碼方式 using(ServiceHost host=new ServiceHost(typeof(HelloWordService))) { host.AddSe
C++ new 動態陣列初始化
問題:紅字部分的程式碼是否有問題? 程式碼是沒有問題的,考慮的是new申請的記憶體有沒有初始化? 在這段程式碼中,有無初始化是沒有關係的,因為str字串中已含有字串結束標誌。 inline mystring::mystring( const char* str ) {
c++ 二維動態陣列初始化及作為引數傳遞
學習c++動態二維陣列寫的程式碼,程式已經在VS2010上跑過了,是ok的包括動態二維陣列的建立,初始化,以及作為形參傳遞#include <iostream> #include<vector> using namespace std; typede
C#中如何申請動態陣列
需求: 複製陣列前k個元素到新陣列 程式碼環境: int[] dk = { 15, 19, 25, 8, 9, 7, 3, 56 }; int k
關於vector二維動態陣列初始化
很多時候,我們要使用動態陣列來儲存一開始未知數量的資料時,往往都是在程式中得到行數和列數,然後再對陣列進行初始化。可是,如果我們只知道行或者列其中的一個數量,可以進行動態陣列初始化嗎? 答案是可以的。如果我們知道行數,那麼初始化可以如此寫:vec
【Java 程式設計】陣列初始化的多種方式
文章目錄 1 陣列定義與初始化基本方式 2 Array 工具類 3 Stream 方式 4 Arrays 1 陣列定義與初始化基本方式 陣列定義的兩種基本方式: int[][] a1; int a2[][]; 與C、
Spring容器的初始化4種方式
1.從classpath路徑中載入applicationContext.xml檔案。 Resource resourc=new ClassPathResource("applicationContext.xml"); XmlBeanFactory bean=new
頁面載入初始化3種方式及區別
1 $(function () { });//jquery2 $(document).ready(function () { });//jquery3 window.onload = function
刪除陣列元素的兩種方式splice和delete
Array.splice(start,count) const arr = ['a', 'b', 'c', 'd', 'e']; let result = arr.splice(1,2); console.log(result); // ['b', 'c']; console.log(arr);
leetCode 349號題目 兩個陣列的交集 ,兩種方式實現, 複雜度分別為O(n^2) 和 O(n)
給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出: [9,4] 說明:
C++中priority_queue的比較函式過載的兩種方式
1.定義比較函式,以函式物件形式 這種方式使用時,需要把函式加入priority_queue的宣告中去 struct com{ bool operator()( T &t1, T &t2) { if(t1.x != t2.
java動態獲取WebService的兩種方式(復雜參數類型)
args oid 類型 ade poi 參數類型 pid eth lse java動態獲取WebService的兩種方式(復雜參數類型) 第一種: @Override public OrderSearchListRes searchOrderList(Order_Fligh
C/C++使用libcurl庫實現post圖片的兩種方式
一.直接上傳檔案方式將圖片檔案跟在引數的後面,這裡的curl和引數需要根據自己的需要修改 char *url=" "; CURL *pCurl = NULL;CURLcode res;struct curl_slist *headerlist =
c++ 用new動態申請陣列初始化的問題
注意括號的使用 注意:C++使用new和delete在堆(自由儲存區)上分配和釋放動態陣列。 動態陣列初始化: 1.元素只能初始化為元素型別的預設值,而不能像陣列變數一樣,用初始化列表為陣列元素提供各不相同的初值。 2.對於內建資料型別元素的陣列,必
c#清空數組&初始化數組&動態數組
pan for line str ima -c system range count 清空數組>>>Array.Clear [去MSDN查看] 1 string[] str = new string[2]; 2 for (int i = 0; i &l
C++ 類物件陣列初始化
如何給類中定義了帶有引數的建構函式的物件陣列賦值 class A { public: A(){}//無參建構函式0 A(int i){}//有參建構函式1 A(int i,int j){}//有參建構函式2 }; int main() { A a,b[5];
C/C++陣列初始化的總結
目錄 陣列定義不初始化會被隨機賦值 陣列初始化的幾種形式 陣列初始化為某一固定值 memset(陣列名,值,sizeof(陣列名)) fill(begin(),end(),value) 以前剛開始學陣列初始化,一直都沒搞太清楚,包括參加PAT考試,直到看了胡凡的《演算
C語言陣列初始化
/*C++使用new關鍵字分配記憶體,而C使用malloc(memory allocate)來分配記憶體*/ #include <stdio.h> #include <malloc.h> /*使用typedef把int型別命名為新型別xx*/ typedef