Cách tăng kích thước của mảng mà không bị lỗi?

tăng chi để rồi lỗi ,tai sao ko khởi tạo mang [100000000000000] cho roi

@TUITK9 Khởi tạo mảng lớn như vậy không được đâu

mang [100000000000000] 

Nó sẽ báo thiếu vùng nhớ ngay.

vậy mang [1 000 000] thôi

Nhưng nhu cầu của bạn ấy là một mảng rất lớn, lớn hơn 1000000

2 Likes

Kích thước của mảng vector tối đa là bao nhiêu vậy mọi người ?

Tuỳ vào bộ nhớ của bạn, tuy nhiên khai báo đến khoảng 2 triệu là compiler báo lỗi/warning rồi.

1 Like

Tùy vào loại dữ liệu mà vector nhận, giới hạn OS + phần cứng… không có giới hạn cố định. Bạn có thể sử dụng std::vector::max_size() để tìm kích thước tối đa của vector.

#include <iostream>
#include <vector>
#include <string>

int main()
{
	std::vector<int> t;
	std::vector<unsigned long long> u;
	std::vector<std::string> v;
	
	std::cout << "std::vector<int> = " << t.max_size() << "\nstd::vector<unsigned long long> = " << u.max_size() << "\nstd::vector<std::string> = " << v.max_size();
}

Kết quả (32-bit):

std::vector<int> = 1073741823
std::vector<unsigned long long> = 536870911
std::vector<std::string> = 178956970

64-bit:

std::vector<int> = 4611686018427387903
std::vector<unsigned long long> = 2305843009213693951
std::vector<std::string> = 576460752303423487
2 Likes

Kích thước tối đa của mảng hai chiều là bao nhiêu vậy mọi người

Như trên thôi. Thớt chơi hẳn 11 chữ số 0 cơ :smiley: chứ stack chỉ 1m slot.

1 Like

mình đoán là thớt đang làm đồ án với số nguyên lớn, trong C++ có thư viện rất hay là bitset, nó là 1 vector các bit, chỉ lưu giá trị 0 hoặc 1. Với số nguyên lớn ta dùng hệ nhị phân để thao tác, có thể viết hàm hoặc phương thức biểu diễn chúng dưới hệ 10 và 16 lưu trong string của C++, mình thấy đây là cách tối ưu thay vì phải cấp phát cái mảng lớn như trên.

Không hiểu ý bạn lắm, mình có nói là với số nguyên lớn thì thao tác nó trên hệ nhị phân, còn nếu muốn hiển thị hệ 10 hay 16 thì viết thêm hàm hay phương thức tùy bạn viết hướng đối tượng hay thủ tục, cấu trúc dữ liệu của mình là bitset. Có gì nhầm lẫn ko???

*whoops* Bitset thì nhiều chữ số lắm :smiley: nên dùng cơ số 2^32 luôn.

1 Like

ủa thớt đang nói về mảng phần tử lớn, cái này để lưu số nguyên lớn mà. Số nguyên lớn sẽ lớn hơn con số 2^32 rất nhiều, nên mình mới đề nghị dùng bitset, nó là 1 vector nhưng các phần tử chỉ có 1 bit, nếu khởi tạo 1 vector 128bit hay 256bit thì con số bạn có thể biễu diễn rất rất lớn 2^128. Thay vì dùng mảng char 1 triệu phần tử chỉ để chứa con số thập phân, điều này không khả thi chứ chưa nói tới vấn đề thuật toán ±*/ các số này trên hệ thập phân.

Cơ số 2^32 tức là mỗi biến unsigned int là một chữ số đấy chứ :slight_smile: 120 slot là biểu diễn được hơn 1000 chữ số thập phân rồi.

theo mình hiểu ý bạn là dùng 1 con số uns int để biễu diễn 1 phần của big int??? Cái này hồi làm đồ án mình có nghĩ tới, tuy nhiên mình thấy nó khá phức tạp nên đã chuyển sang bitset ^^ đơn giản hơn nhiều, và thuật toán tính toán trên hệ2 thì cũng có sẵn hết.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?