tăng chi để rồi lỗi ,tai sao ko khởi tạo mang [100000000000000] cho roi
Cách tăng kích thước của mảng mà không bị lỗi?
@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
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.
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
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ơ chứ stack chỉ 1m slot.
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 nên dùng cơ số 2^32 luôn.
ủ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ứ 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.